gpt4 book ai didi

c++ - 为什么使用此代码会出现 "Access violation reading location"错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:42 25 4
gpt4 key购买 nike

谁能告诉我为什么在这个代码示例中出现“访问违规读取位置”?我该如何解决这个问题?

#include <vector>
using namespace std;
struct StructTest;
struct Struct1;
typedef struct Struct1{
StructTest* test;
} Struct1;

typedef struct StructTest{
vector<Struct1*> test123;
} StructTest;

static StructTest* abc;

int test(){
abc = (StructTest*) malloc(sizeof(StructTest));;
Struct1* a1 = (Struct1*) malloc(sizeof(Struct1));
a1->test = abc;
abc->test123.push_back(a1);
return 0;
}

int main(){
test();
return 0;
}

最佳答案

您没有创建 test123。使用 new 而不是 malloc 分配结构,这将为您创建 test123

abc = new StructTest;
Struct1* a1 = new Struct1;

请记住使用 delete 而不是 free 进行处置。

事实上,由于您正在使用 C++,因此您应该停止使用 malloc

关于c++ - 为什么使用此代码会出现 "Access violation reading location"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672567/

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