笔试记忆版问题-delete[]与delete问题

来源:互联网 发布:大数据挖据市场前景 编辑:程序博客网 时间:2024/06/01 09:34

在研究new/delete之前 需要区分其与malloc/free的区别,C中一般使用M/F来对动态内存进行分配和回收,且不会调用构造和析构函数。对于new/delete,那么具体的使用以及机制如下。

1.数组时候 使用new[] ,销毁时候用  delete[] 变量名;例如:int *p = new int[3];  delete[] p;

2.不是数组时候 :int *p = new int; delete p;

为神马使用 delete[]与delete呢? 需要看两种内存方式下内存结构, 1情形下 p地址直接存储内容,而2情形下 p地址开始首先存储数组大小,所以需要用delete[] 告诉系统回收p到p+3地址下的内存。

【记得从一个地方看到,当变量为int 等这种类型时候 delete与delete[]用法一样,当是含有构造函数的对象时候 Delete与delete[]不能替换。有待确认。。】


0 0
原创粉丝点击