c++ - 数据在内存中丢失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;
}
}
}
};
解决方案
只需从您的构造函数中删除它:
Field ***f;
这是构造函数体的局部变量,并且会影响成员。构造时,本地 f 超出范围,您将留下内存泄漏。
推荐阅读
- java - 如何让 Jetty9 网络服务器监听 80 端口?
- javascript - 跨多个 html 页面设置 darkMode
- flutter - 外部库/Dart 包中手动删除的包不再出现(Android Studio)
- spring-boot - 在 aws Lambda 中初始化 Spring Boot 应用程序时出错
- algorithm - 按字典顺序
- flutter - 从 Flutter 的根目录中获取所有文件夹
- python - 如何在python中将句子拆分为子句?
- firebase - 如何在 Firebase(客户端)中加密文件存储?
- python - 如何在 kivymd 中添加下拉列表并赋予它一些功能
- f# - 为什么 Seq.map 只评估 5 个元素?