gpt4 book ai didi

c++ - 访问冲突写入 0xcdcdcef#,对象中的对象

转载 作者:行者123 更新时间:2023-11-30 00:52:45 26 4
gpt4 key购买 nike

嘿,我是 C++ 的新手,我不确定为什么这不起作用。我有两个类,我们称它们为 ned 和 myfile。我需要在每个 ned 对象中有两个文件对象。这是一个简化:

class myfile {
public:
int nData;
int nHeaderSize;

myfile() {
nData=0;
nHeaderSize=0;
}
};

class ned {
public:
myfile *pSrc,*pTgt;

ned() {
myfile* pSrc = new myfile();
myfile* pTgt = new myfile();
}
};

int main(int argc, char* argv[]) {
ned* nedObj = new ned();
nedObj->pSrc->nData=5; //Access violation error here
}

这显然是一个简化版本,但任何想法都会受到赞赏。如果这个小例子中的问题不明显,我可以添加更多代码。

编辑:修复了我在翻译成较小示例时输入错误的分号

最佳答案

改变

ned() {
myfile* pSrc = new myfile();
myfile* pTgt = new myfile();
}

ned()
: pSrc(new myfile),
pTgt(new myfile) {
}

目前,您的代码没有初始化nedObj。相反,ned 的构造函数创建了两个名为 pSrcpTgt 的局部变量。变量迅速超出范围,泄漏资源。

关于c++ - 访问冲突写入 0xcdcdcef#,对象中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com