访问违规的问题
我的程序简化以后大致是这个样子的:
class Memory {private: int mem[1024];public: void Memory(void) { memset(mem, 0, sizeof(int) * 1024; } int read(int addr) { // 发生错误的位置 return mem[addr]; }}class CPU {private: int data; Memory *memorypublic: void CPU(Memory *mem) { memory = mem; } void fetch(int addr) { data = memory->read(addr); } void loop(void) { fetch(300); }}int main() { Memory *theMemory = new Memory; CPU *theCPU = new CPU(theMemory); theCPU->loop(); return 0;}class Memory {private: int mem[1024];public: Memory() { memset(mem, 0, sizeof(int) * 1024); } int read(int addr) { // 发生错误的位置 return mem[addr]; }}class CPU {private: int data; Memory *memorypublic: CPU(Memory *mem) { memory = mem; } void fetch(int addr) { data = memory->read(addr); } void loop(void) { fetch(300); }}int main() { Memory *theMemory = new Memory; CPU *theCPU = new CPU(theMemory); theCPU->loop(); return 0;}
[解决办法]