delete语句的用法

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:59:44
用new申请完内存之后
用delete 释放内存时,语句为
delete []p;
而中括号内无须声明申请内存的个数
请问为什么啊??
谢谢个为高手了~~~

delete 是删除动态分配的内存或内存区域
delete[]p是释放指针p所指向的内存区域

所以无须
也可参见http://topic.csdn.net/t/20041025/10/3487649.html

new分配的内存的开头和结尾都有标记,delete可以根据这个标记来确定释放内存的区域,所以不需要传入内存的字节个数。

附上一则讨论贴,可以看看
参考资料:http://topic.csdn.net/t/20061116/20/5164114.html

这样,系统就知道删除的是数组了,我不知道加上个数错不错,不过向来要错的,因为这是被系统重载了。还有如果申请的是单个只能用delete p,不能加【】

睡觉前和大家谈谈new和delete操作的原理

今天一个朋友问我new'和delete操作的原理,我觉得这2个还是用的比较多的,所以特别拉到论坛上来和大家说说,大家在用指针的时候很喜欢用new,可new底层是怎么操作的呢,我想很少有人知道,其实要涉及到一部分操作系统的原理了,当我们用new的时候
编译器自动会把它映射到malloc上面去,我想这个函数大家也很熟悉把,而malloc函数到底干了些什么呢,首先我们要知道,操作系统里面进行内存分配是按块分配的,它是一次分配一块(大概4M),然后保存这块内存,最后再以64kb一点点的吞噬它,而操作系统最小的单位是页,而一页默认是4kb,那么也就是一次用16页去填充这块内存至于说到页又要涉及到页的替换问题,什么FIFO,这些我们不谈,扯远了,那这些一次的16页和malloc又有什么关系呢,malloc函数会根据一个内存阀值去选择相应的内存创建函数,这个阀值我们可以