Visual Studio 2010的访问冲突

Access Violation on Visual Studio 2010

本文关键字:访问冲突 2010 Studio Visual      更新时间:2023-10-16

我的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显示:

TP6.exe中0x53eacafa (msvcr100 .dll)的未处理异常:

看我的struct item:

 struct titem {
      int prioridade;
      string nome;
      int freq;
 };

在dev - c++中,代码工作正常!可能会出现什么问题,我该如何解决它?

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

您需要使用new而不是malloc。

tlista *aux = new tlista;

当你用完struct后,使用delete来处理它。

delete aux;

既然你正在使用c++,你应该忘记所有的mallocfree。堆分配是用c++中的newdelete来执行的。