Рассмотрим следующий код:
char* pointerTesting(void) {
char* test = "hello";
return test;
}
int main() {
char* string = pointerTesting();
printf("string: %s\n", string);
}
У него нет проблем с компиляцией и запуском. Однако, как я понимаю, это не должно работать, поскольку память, выделенная для указателя test
, находится в стеке и уничтожается при возврате в main.
Итак, вопрос в том, как это может работать без malloc в функции pointerTesting ()?