char* StringCopy(const char* string) {
char* newString;
int len;
len = strlen(string) ;
newString = malloc(sizeof(char)*len);
strcpy(newString, string);
return(newString);
}
Выше кода работает, даже если newString является локальным и должен быть освобожден в конце функции. Я новичок в C, любая ссылка, которая объясняет это или объяснение, будет очень полезна. Я имею в виду, не должны ли мы получить такую ошибку: адрес памяти стека, связанный с локальным , переменная 'newString' вернулась?C Программирование: строковое копирование с использованием кучи
Что вы хотите сказать? – SSC
Вы должны управлять своей собственной кучевой памятью в C. Таким образом, если вы выделяете некоторую память в функции и не выделяете ее, она остается выделенной до тех пор, пока ваш процесс не завершится (или вы не выделите его в другом месте). – jzila