首页 > 解决方案 > 数据在内存中丢失c ++

问题描述

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

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;
      }
    }
  }
};

标签: c++classpointersmatrix

解决方案


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

Field ***f;

这是构造函数体的局部变量,并且会影响成员。构造时,本地 f 超出范围,您将留下内存泄漏。


推荐阅读