C++在new一个对象时有没有进行内存初始化

  • 在C语言中,使用malloc开辟堆内存时,都不会对内存进行初始化,如果直接使用,可能会获取到奇奇怪怪的值。一般我们还会在后一句使用memset(p, 0, size)函数进行内存的清零初始化操作。
  • C++在new时的初始化的规律为:

1、对于有自己写构造函数的类,不论类型名后面有没有括号,都用构造函数进行初始化;
2、如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,
3、而加了括号的new会在分配内存的同时初始化为0。

  • 所以一般我们最好都在类型名加括号进行初始化Class *p = new Class();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容