【问题标题】:Data getting lost in the memory c++ [closed]数据在内存c ++中丢失[关闭]
【发布时间】:2019-12-07 04:15:23
【问题描述】:

所以我用三重指针制作了一个矩阵,就像矩阵有指向另一个类的指针。在构造函数中,我分配了内存,但是当构造函数结束时,所有数据都会丢失在内存中。我究竟做错了什么? 这是我的课

class Map {
  Field*** f;
  int rows;
  int columns;

 public:
  Map(int rows_, int columns_) : rows(rows_), columns(columns_) {
    Field*** f;
    f = new Field**[rows];
    for (int i = 0; i < rows; i++) {
      f[i] = new Field*[columns];
      for (int j = 0; j < columns; j++) {
        f[i][j] = new Field;
      }
    }
  }
};

【问题讨论】:

  • Map 构造函数中,您要声明一个名为f 的局部变量,然后对其进行初始化。然后该变量超出范围并且它指向的内存被泄漏。数据成员(也称为 f)永远不会被初始化。

标签: c++ class pointers matrix


【解决方案1】:

只需从您的构造函数中删除它:

Field ***f;

这是构造函数体的局部变量,并隐藏成员。当构造本地 f 超出范围时,您会出现内存泄漏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多