标签:c-3 c malloc memory new-operator c++ c++ stl c++ c++ c++
你能安全地在C类的构造函数中使用malloc并使用new来创建该对象的实例吗?我知道在正常情况下将两者串联使用是不安全的,但在这种情况下是否可行/安全?
解决方法:
>是的,你可以,但你应该有充分的理由. new运算符调用构造函数,它在很多方面就像常规类方法一样.您还应该将free()部分添加到析构函数中.
但是请注意,如果你使用malloc()一个c++对象,那么该对象的构造函数将不会被调用.我认为在c++程序中调用malloc()的原因很少:你可能希望稍后重新分配(),这是一个原因.但您始终可以使用stl容器等本机c++对象.
>使用在c++程序中分配内存的两种方式并不是不安全的,你只需要小心不要使用malloc()某些东西,然后删除它或新的东西然后free()它.但是对于malloc(),你总是要小心许多事情,比如返回NULL和free()分配的内存,所以这不是额外的事情.
再一次,你可以做的最危险的事情是malloc()一个c++对象.因为正如我已经说过的,不会调用构造函数.
标签:c-3,c,malloc,memory,new-operator,c++,c++,stl,c++,c++,c++ 来源: https://codeday.me/bug/20190727/1554143.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。