访问特定结构成员时程序崩溃
Program crashing when accessing a specific struct member
无论我做什么,我似乎都可以访问x,即使它的实现几乎与y相同。我不确定是否存在某种内存访问问题。程序在第一次访问x时中断,没有编译错误或警告。如果x不存在,在CPU中调用step可以正常工作。任何帮助都太好了。
ESys.h
#pragma once
namespace ESYS
{
struct InterconnectI
{
int y;
std::vector<uint8_t>& Ip;
std::vector<uint8_t>& Ir;
InterconnectI(std::vector<uint8_t>& p, std::vector<uint8_t>& r);
~InterconnectI(){};
void hi(int n);
};
struct CPUI
{
int x;
CPUI();
~CPUI(){};
void step(InterconnectI* i);
};
struct SystemI
{
CPUI* CPU;
InterconnectI* Interconnect;
SystemI(std::vector<uint8_t>& p, std::vector<uint8_t>& r);
void Step();
};
}
ESys.cpp
#include "stdafx.h"
#include "ESys.h"
namespace ESYS
{
InterconnectI::InterconnectI(std::vector<uint8_t>& p, std::vector<uint8_t>& r) : Ip(p), Ir(r)
{
y = 0;
}
void InterconnectI::hi(int n)
{
std::cout << "Interconnect " << n << std::endl;
}
CPUI::CPUI()
{
x = 5;
}
void CPUI::step(InterconnectI* i)
{
std::cout << "Step CPU -> " x; //Accessing doesn't work...
i->hi(x); //Passing doesn't work...
}
SystemI::SystemI(std::vector<uint8_t>& p, std::vector<uint8_t>& r)
{
CPUI* CPU = new CPUI();
InterconnectI* Interconnect = new InterconnectI(p, r);
}
void SystemI::Step()
{
CPU->step(Interconnect);
}
}
Main.cpp
#include "stdafx.h"
#include "ESys.h"
std::vector<uint8_t> pDat;
std::vector<uint8_t> rDat;
int main(int argc, const char *argv[])
{
ESYS::SystemI ESystem(pDat, rDat);
ESystem.Interconnect->y = 11;
for (;;)
{
ESystem.Step();
}
return 0;
}
问题就在这里:
SystemI::SystemI(std::vector<uint8_t>& p, std::vector<uint8_t>& r)
{
CPUI* CPU = new CPUI();
InterconnectI* Interconnect = new InterconnectI(p, r);
}
new
的结果分别赋值给局部变量CPU
和Interconnect
。数据成员SystemI::CPU
和SystemI::Interconnect
保持未初始化状态。
相关文章:
- 程序崩溃并显示"std::out_of_range"错误
- 试图创建流或fopen时程序崩溃
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- DLL Made with CMake 使程序崩溃
- 程序崩溃使用boost::asio
- 调用 free() 有时会导致程序崩溃
- 邮件加密程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- For 循环在尝试读取数组 c++ 时程序崩溃
- 即使有 0 个错误,Getter 似乎也会使程序崩溃
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 无法访问的代码如何导致我的程序崩溃?
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- QCompleter set模型使应用程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 删除SDL_PollEvent时程序崩溃