您的位置:首页 > 编程语言 > C语言/C++

混沌 IN C++::动态资源管理陷阱

2004-06-29 05:25 405 查看
难度:



先阅读下面的代码然后来解答下面的那个问题 struct[/b] A {}; int[/b] main() { A *p = new[/b] A; p->~A(); free(p); } 问题:new/delete 和 malloc/free 有哪些区别? 答:new/delete 会在分配的内存上调用对象的构造函数和析构函数来初始化和销毁对象,而 malloc/free 却不能。更重要的是new/delete 和 malloc/free 不能混用。 new 是在自由存储区中分配内存,delete 是负责释放自由存储区中的内存 malloc 是在堆中分配内存,free 则负责释放。 自由存储区和堆的访问方式是不同的,或者说是与平台相关的,如果混用那么必将导致程序崩溃。在某些编译器上也许不会出现问题,但永远相信这是错误的、不可移植的。 现在,上面那段代码有问题吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: