如果我在类构造函数中使用malloc(或new/ new[])分配内存,那么该内存是否可以被覆盖?
class stack {
private:
int * stackPointer;
public:
stack (int size) {
stackPointer = (int *) malloc (sizeof(int) * stackSize);
}
int peek (int pos) {
return *(stackPointer + pos); //pos < size
}
}
Run Code Online (Sandbox Code Playgroud)
malloc/ 如果你遵循三条规则,new在构造函数中是安全的.使用malloc/ new您现在拥有一个资源,您必须明确注意在适当的时间发布.
因此:您必须定义一个复制构造函数,赋值运算符和free内存的析构函数.如果你不这样做,那么这个课程可能会被误用,并导致你遇到很多问题.
如果您想避免必须定义这些额外的功能,请std::vector改用,为您处理它们.