トレースを試みましたが、次のコードが 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();
}