什么情况导致C++中new语句不执行?

2025-02-24 12:28:56
推荐回答(4个)
回答1:

唯一导致new无法执行的操作就是内存不足。

new实际有两部分操作:
1 malloc分配足够的内存空间。
2 在这个内存空间的对象上执行构造函数。

其他意义的new无法执行:
1 对应的类的构造函数是private的,无法new。当然这种错误,编译期就会发现,不会在执行时出现。
2 new的过程中,throw exception抛出异常。new 将无法正确返回生成对象。但这种说法严格上来说,new依然执行,但只是错误返回。没有正常生成对象。

回答2:

除了内存不足。
还有一种可能,就是构造函数出现异常。检查构造函数参数是否类型正确,是否数据正确。

回答3:

还有可能出现的一种情况就是前面有访问越界的问题,导致程序堆栈已经被损坏。new成功了。但是记录不下来。

回答4:

内存不够了?