c++程序中的内存损坏
Memory Corruption in C++ program
我想通过写一个关于康威生活的游戏来提高我的c++水平。
GameBoard对象正在损坏。我直接从游戏对象构造函数调用它的print()
方法,它可以工作。然后我通过Game的print_board方法间接调用它,并在完整性检查上得到一个错误。
同样,在main中,有一个变量的声明,我从来没有使用过,但如果我删除它,错误就会消失。不知怎么的,我在做一些破坏记忆的事情。这可能很明显。
非常感谢任何帮助!
#include <iostream>
using namespace std;
class Board {
int size;
int grid[100][100];
public:
Board(int board_size) {size = board_size;}
void print() {
cout << "Board::print()" << endl;
if (size < 1) {cout << "print: size must be > 0: size=" << size << "n"; exit(1);}
}
};
class GameRuleSet { }; // Methods removed
class Game {
private:
Board * game_board;
GameRuleSet * rule_set;
public:
Game (GameRuleSet * p_rule_set, int p_board_size) {
Board * game_board = new Board(p_board_size);
cout << "Second Call - indirect..." << endl;
game_board->print();
cout << "Second Call - direct..." << endl;
this->print_board(); // Error manifests from here
}
void print_board() {game_board->print();}
};
int main () {
int num_turns = 10; // This line manifests error.
int board_size = 10;
GameRuleSet rule_set = GameRuleSet();
Game game = Game(&rule_set, board_size);
}
你在你的构造函数中重新声明"Board* game_board",它遮蔽了同名的成员变量。然后使用构造函数中分配的本地game_board来打印。
print_board()函数使用未分配的成员,因此抛出错误。
从
更改分配Board * game_board = new Board(p_board_size);
game_board = new Board(p_board_size);
相关文章:
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在调试 malloc():新内存损坏
- 仅特定内核计数上的 MPI 内存损坏
- C++程序错误:malloc():内存损坏
- 调用std::函数成员时内存损坏
- C++ 内存损坏检测
- 由于标头中的 #define 不匹配而导致内存损坏
- C STD ::线程中的种族状况或内存损坏
- malloc()内存损坏仅通过为特定数量编写int数组
- 字符串标记化期间的内存损坏
- 从检测到 glibc 正常退出 - malloc():内存损坏
- 放置在外部 DLL 中的类中的字符串数据的内存损坏
- std :: string ::擦除会导致内存损坏
- 编译器如何检测内存损坏
- mix_playMusic导致内存损坏
- 在使用新操作员和C 中的结构的调用构造函数时,获得内存损坏(Malloc)
- 两个内联程序集调用与一个内联程序集调用中的内存损坏?
- 如何调试不确定内存损坏?
- 增强Dijkstra代码会导致片段内存损坏
- 内存损坏从vb.net调用c dll