构造函数中的malloc安全吗?

tex*_*ood 3 c++

如果我在类构造函数中使用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)

nne*_*neo 9

malloc/ 如果你遵循三条规则,new在构造函数中是安全.使用malloc/ new您现在拥有一个资源,您必须明确注意在适当的时间发布.

因此:您必须定义一个复制构造函数,赋值运算符和free内存的析构函数.如果你不这样做,那么这个课程可能会被误用,并导致你遇到很多问题.

如果您想避免必须定义这些额外的功能,请std::vector改用,为您处理它们.