В настоящее время я использую следующий код, чтобы получить «пониженную» строку:с использованием арифметики указателя для итерации, возможной утечки памяти?
void strlower(char** string)
{
char* ptr = malloc((strlen(*string)+1) * sizeof **string);
memcpy(ptr, *string, (strlen(*string)+1) * sizeof **string);
while (*ptr) {
if (*(ptr) >= 'A' && *(ptr) <= 'Z') {
memset(*string + (strlen(*string) - strlen(ptr)), (char)(*(ptr)+32), sizeof **string);
}
++ptr;
}
memcpy(*string, ptr, (strlen(*string) +1) * sizeof **string);
/// free(ptr); THROWS ERROR
free(ptr);
ptr = NULL;
}
Если я пытаюсь free(ptr);
я наделенным malloc
это бросит мне исключение.
Есть ли утечка памяти? не могу ли я освободить его, потому что он пуст? есть что-то делать с null pointer
s? Это неопределенное поведение? хотелось бы узнать!
'размерof ** строка' ... пожалуйста, не наденьте код, как будто, сбив с толку в лучшем случае. –
В чем проблема с 'tolower()' и простой цикл? –
«это сделает меня исключением». - C не поддерживает исключения. – Olaf