示例代碼是這樣的:任何方式都可以識別內存地址是否可用?
#include <iostream>
using namespace std;
int main()
{
int* addr = (int*)malloc(100);
cout << "Hello World" << endl;
printf("addr#1=%p\n",addr);
free(addr);
printf("addr#2=%p\n",addr);
return 0;
}
我知道addr#1
和addr#2
將打印相同的地址。 但是有沒有一種方法可以識別可以自由使用的地址?
有人說這是不可能的,除非你重新分配NULL
或nullptr
到addr
來識別。好的,如果指針指向一個對象,並且該對象被刪除,結果是一樣的?
可能的重複[如何檢查指針是否已在C中釋放?](https://stackoverflow.com/questions/8300853/how-to-check-if-a-pointer-is-freed-already -in-c) –
好吧,如果指針指向一個對象,並且該對象被刪除,結果是一樣的? – naive231
如果這是C(標記爲),'printf(「addr#2 =%p \ n」,addr);'調用*未定義行爲*試圖在'free(addr)'後面訪問'addr'。 –