任何人都可以告诉我为什么我用这个代码示例得到"访问违规阅读位置"?我该如何解决这个问题?
#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;
}
Run Code Online (Sandbox Code Playgroud)
你没有创造test123.用new而不是分配结构,malloc这将为test123你创造.
abc = new StructTest;
Struct1* a1 = new Struct1;
Run Code Online (Sandbox Code Playgroud)
记得要处理delete而不是处理free.
事实上,由于您使用的是C++,因此您应该停止使用malloc.
它在这条线上崩溃了:
abc->test123.push_back(a1);
Run Code Online (Sandbox Code Playgroud)
原因是因为您使用 分配了上面两行malloc。因此, 的内容test123未初始化。所以当你调用push_back它时它就会崩溃。
| 归档时间: |
|
| 查看次数: |
2406 次 |
| 最近记录: |