可能重複:
Does the pointer passed to free() have to point to beginning of the memory block, or can it point to the interior?我可以通過引用偏移指針來釋放()嗎?
我分配使用malloc()
堆一些內存。我添加的偏移指針,並返回到調用函數return ptr+(sizeof(char)*4))
,在這個返回值存儲在ptrReturned
,例如。
最大的問題是,當我從sizeof(char)*4
偏移分配塊的開始位置時,整個塊將被釋放還是將其從偏移量釋放直到分配塊的末尾?我使用的編譯器是MSVC++ 2008。
如果分配的地址存儲在一個鏈表,並有指向先前的項目,那麼它應該擺脫在以前指針爲NULL高達到下一個指針爲NULL整個塊,對不對?
我試着調試和看的記憶,但我不能讓它覆蓋騰出塊空間。有沒有辦法可能顯式地嘗試和在堆中分配空間在一個已定義的地址,並可能得到一個異常嘗試分配已分配的內存?這樣我就可以知道,如果有的話,當然,沒有更簡單的答案。
我希望這個問題是清楚的,如果我錯過了一些資料,請讓我知道在評論中。謝謝。
[Duplicate](http://stackoverflow.com/questions/4589033/does-the-pointer-passed-to-free-have-to-point-to-beginning-of-the-memory-block ) – Mehrdad 2011-01-20 08:17:23
我們不會因爲他們是愚蠢而刪除問題。另外模仿並不是那麼糟糕。更多機會搜索者找到他們想要的東西。 – Will 2011-01-20 15:14:28