试图追踪,但没有找到以下代码在 VC++ 中给出“访问冲突”以及在 gcc 中出现段错误的原因。
#include <vector>
#include <iostream>
using namespace std;
typedef struct node
{
std::string data;
vector <struct node*> child;
}NODE, *PNODE;
int main()
{
PNODE head;
head = (PNODE) malloc(sizeof(NODE));
head->data.assign("hi");
printf("data %s", head->data.c_str());
getchar();
}
最佳答案
为什么你认为它应该有效?您使用 malloc
,而不是 new
,因此不会调用构造函数,并且您所做的一切都会访问未初始化的内存。
关于c++ - 分段故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296376/