[请教]delete的相关问题
小弟对指针的释放有点疑惑:
指针是怎么样保存它所指区域的大小信息的?它本身只有四字节,里面应该只是存储所指区域的地址吧。那所指区域的大小信息是存储在哪的?
难道说存在编译器的符号表中?delete所引发的释放操作发生在运行时吧?编译器在那时根本发挥不了作用啊。
为什么delete能释放正确的size?即使是释放void*时。
希望大哥大姐们指点一下。
[解决办法]
不能调用正确的析构函数就可能出现问题啊,可能导致一些资源没有被释放
关于delete operator如何知道应该释放多大内存,这儿有篇文章可以看看:
如何在Linux操作系统下检测内存泄漏
http://os.yesky.com/lin/118/2595618.shtml
[解决办法]
指针是怎么样保存它所指区域的大小信息的?它本身只有四字节,里面应该只是存储所指区域的地址吧。那所指区域的大小信息是存储在哪的?
-------------------------------------------------
一般在指针所指向区域的前面的一小块区域中存放块的相关信息(称为“cache”)。