我的C++代码有问题,请看以下函数:

void insere(titem x){
    tlista *aux;
    aux = (tlista*)malloc(sizeof(tlista));
    aux->item = x;
    ultimo->prox = aux;
    ultimo = ultimo->prox;
    aux->prox = NULL;
}

当执行以下行:aux->item = x;时,Visual Studio会说:



看看我的struct titem:
 struct titem {
      int prioridade;
      string nome;
      int freq;
 };

在Dev-C++中,代码可以正常工作!什么情况下会出现问题,我该如何解决?

最佳答案

您正在使用malloc为对象分配内存。这将分配内存,但不会初始化对象。对于非POD成员,这是一个问题,例如aux->item.nome

代替使用malloc,您需要使用new

tlista *aux = new tlista;

完成该结构后,请使用delete对其进行处理。
delete aux;

由于您使用的是C++,因此应该忘掉mallocfree的所有知识。堆分配在C++中使用newdelete执行。

关于c++ - Visual Studio 2010上的访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15118135/

10-09 12:28