c++ - 构造函数中的 malloc 安全吗?

标签 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
    }
}

最佳答案

malloc/new 在构造函数中是安全的,前提是您遵循三个规则。使用 malloc/new,您现在拥有了一个资源,您必须明确注意在正确的时间释放该资源。

因此:您必须定义一个复制构造函数、一个赋值运算符和一个将释放 内存的析构函数。如果不这样做,该类可能会被滥用并给您带来很多问题。

如果您想避免必须定义这些额外的函数,请改用 std::vector,它会为您处理它们。

关于c++ - 构造函数中的 malloc 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489487/

相关文章:

c++ - 修剪字符数组 C++

c++ - 在 C++ 中有条件地从 1..n 或 n..1 迭代

c++ - 为什么要使用 cl::vector?

c++ - 将 jintarray 转换为 jfloatarray Android JNI

c++ - 将 stdout/stderr 重定向到 unix c++ 下的文件 - 再次

c++ - 使用 g++ 的 undefined symbol

c++ - 快速定位MSCV 2010中的错误信息

c++ - 高效的图像到矩阵转换

C++ boost : Simple nested dictionary?

c++ - 堆损坏