我已經看到了下面的代碼的結果有些差異:如何知道C函數是否可用?
#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,在Windows gargabge caracters,沒什麼在Linux和Unix系統中打印「Hello World」。
有沒有辦法檢查指針的狀態以知道內存何時被釋放?
我覺得這種打印機制不可能一直都是可信的。
Thnaks。
問候。
釋放指針並不一定會改變它指向的實際內存。 – Gabe 2011-03-17 02:22:15