我正在實現內存分配器。我目前滿足這個問題內存分配器:避免空閒內存兩次
void deallocate(void* ptr) {
// code to deallocate memory start at ptr
}
// client test code
printf("Test : deallocate same pointer two times \n");
char* ptr = (char*) allocate(32);
deallocate(ptr);
deallocate(ptr); // ERROR
因爲DEALLOCATE(由反正),就在指針PTR可用內存。地址存儲在ptr中仍然像以前一樣,我不能將它設置爲NULL(因爲參數是一個指針,而不是指針的指針)。
所以我的問題是:我怎樣才能防止分配相同的指針兩次上述場景?
謝謝:)
你有'deallocate/alocate'實現的簿記數據嗎?如果是這樣,你可以使用它們來跟蹤釋放的內存。在已釋放的內存上調用「釋放」時,會顯示警告。 –