84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
c++中new和free可以结合使用吗?
如下例,我new一个char数组,使用free释放,会不会造成生成什么安全问题?
代码可以编译运行,谢谢各位大神指点。
char * ch = new char[10]; for (int i = 0; i < 10; i++) { ch[i] = '0' + i; } free(ch);
光阴似箭催人老,日月如移越少年。
new和delete必须成对的使用,不能和malloc|free混合使用,你那么写可能对于基本类型是没有问题的,但是一旦设涉及到构造函数与析构函数就不行了,养成习惯是非常重要的,而且标准库貌似没有规定new一定要使用malloc来实现,所以new的东西还是需要delete,而不是free
new
delete
malloc|free
malloc
free
用delete更好
用free有可能new出来的对象未执行析构函数而可能导致程序出错
不建议这样使用,还是new/delete ,malloc/free搭配使用
因为C++标准没有要求new的内存分配是由malloc分配的,虽然有一些C++实现是这么做的,但是并不是所有的。而且new操作符是可以被重载的,可以写自定义的内存分配代码,这种情况肯定不能free。此外对于new的类对象,不可以调用free释放,因为析构函数不会被调用。
首先:new和delete底层使用malloc和free实现的其次:当是基本的数据类型时,delete和delete[]可以混用用free也可以释放new出的空间,但是new[]的有时候就不可以重点是最好还是不要混用
new
和delete
必须成对的使用,不能和malloc|free
混合使用,你那么写可能对于基本类型是没有问题的,但是一旦设涉及到构造函数与析构函数就不行了,养成习惯是非常重要的,
而且标准库貌似没有规定
new
一定要使用malloc
来实现,所以new
的东西还是需要delete
,而不是free
用
delete
更好用free有可能new出来的对象未执行析构函数而可能导致程序出错
不建议这样使用,还是new/delete ,malloc/free搭配使用
因为C++标准没有要求new的内存分配是由malloc分配的,虽然有一些C++实现是这么做的,但是并不是所有的。而且new操作符是可以被重载的,可以写自定义的内存分配代码,这种情况肯定不能free。此外对于new的类对象,不可以调用free释放,因为析构函数不会被调用。
首先:new和delete底层使用malloc和free实现的
其次:当是基本的数据类型时,delete和delete[]可以混用
用free也可以释放new出的空间,但是new[]的有时候就不可以
重点是最好还是不要混用