Я видел некоторые различия в результате следующего кода:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(void)
{
char* ptr;
ptr = (char*)malloc(sizeof(char) * 12);
strcpy(ptr, "Hello World");
printf("%s\n", ptr);
printf("FREEING ?\n");
free(ptr);
printf("%s\n", ptr);
}
Позвольте мне объяснить:
При третьем вызове printf в зависимости от ОС я получаю разные результаты, gargabgeсимволы в Windows, ничего в Linux и в системе Unix «Hello World» не печатается.
Есть ли способ проверить состояние указателя, чтобы узнать, когда освободилась память?
Я думаю, что этот механизм печати нельзя доверять все время.
Thnaks.
Привет.