说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一个容易被忽视的问题---csf

编辑:说三道四文库 发布时间:2018-02-20 02:18
HTML文档下载 WORD文档下载 PDF文档下载
请问:
1。char *p=new char[N];
2. char *p=(char *)malloc(sizeof(char)*N)

两句有什么区别??

分别用什么释放?/
无聊!
So easy question.



               new-----delete
               malloc----free
               入门级的问题!拜托了,好好看书吧。



    
区别是一个是c的方法malloc----free,另一个是c++的特色new-----delete。这正好说明c++比c简便。释放分别用delete和free.
我想问的是存储区的开辟有什么区别?
maclloc()  free()
new   delete
实际上并没有什么大的不同,都是在系统堆上申请内存
如果你研究一下VC运行库的源代码,就会发现new操作实际上就是
调用了malloc,只不过new知道类型尺寸
new可以申请对象资源,而malloc不能!
比如你定义了一个类
class  Person
{
   void Person(); //构造函数
   ...
};

Person* man = new Person();
new 是一个关键字
malloc 是一个函数

编译器会根据new的对象不同采用不同的方法来处理,它为类创建和释放的自动化机制提供了保障。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘