猿问

求问运算符和函数有什么区别,C++里面不是用New开辟的空间可以用free撤销吗?

运算符和函数有什么区别,C++里面 不是用New开辟的空间可以用free撤销吗 就是可不可以直接用free撤销任意变量空间

MMMHUHU
浏览 195回答 2
2回答

拉风的咖菲猫

运算符是实现某种功能的在C++里面一般是通过函数来实现运算符重载功能后面一个问题用new开辟的空间当然要用delete释放但是一般的变量空间C++会有自己的申请释放机制, 不需要你人工释放楼上说的不错new和delete对应, 这就是C++的申请和释放内存的办法而malloc和free是C的方法

DIEA

new delete这是c++的动态内存管理方式new的同时会调用对象的构造函数delete的同时会调用对象的析构函数这就是和malloc, free的区别比如你struct foo {int* p;foo() { p = new int[11111]; cout << "a"; }~foo() { delete [] p; }};你foo* x = (foo*)malloc(sizeof(foo)); // 不会调用构造函数,p不会被初始化,不会输出adelete x; // 调用析构函数,执行delete [] p 是什么结果自己试下就知道了吧或者foo* x = new foo; // 调用构造函数,输出a,初始化p为一个包含11111个int的数组free(x); // 不会调用析构,delete [] p 不执行,内存泄漏,没疑问吧至于能不能这样混用,具体的编译器实现可能还有限制,不过我给出的例子应该可以解开你的疑问了:)&nbsp;
随时随地看视频慕课网APP
我要回答