jam*_*625 1 c malloc free pointers copy
似乎在其他地方找不到我的问题的答案。
考虑代码:
int *ptr = malloc (sizeof (*ptr));
int *dummyPtr = ptr;
free (dummyPtr);
printf ("ptr: %p, dummy: %p\n", ptr, dummyPtr);
Run Code Online (Sandbox Code Playgroud)
据我了解,free()接受一个指针并使其指向NULLaka (nil)。即,指针被取消引用并且指向任何地方。这意味着指针指向的内存被有效擦除。
这个问题分为两个部分:
dummyPtr似乎仍然指向内存中的地址而不是(nil). 为什么?ptr?它仍然指向该内存块还是也被取消引用?我已经多次运行此代码和某些变体,但结果相互矛盾。有时只有副本受到影响,有时两者都受到影响。有时指向的值甚至设置为零!
坦白说,我不知道发生了什么事。(我正在运行 Debian,如果这有什么区别的话。)
| 归档时间: |
|
| 查看次数: |
2233 次 |
| 最近记录: |