1

我的 C++ 代码有问题,看看这个函数:

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

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

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

看看我的结构项目:

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

在 Dev-C++ 中,代码可以正常工作!什么可能会导致问题,我该如何解决?

4

1 回答 1

3

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

而不是使用 malloc 您需要使用new.

tlista *aux = new tlista;

完成结构后,请使用delete它来处理它。

delete aux;

由于您使用的是 C++,因此您应该忘记所有关于mallocand的内容free。堆分配使用C++newdelete在 C++ 中执行。

于 2013-02-27T17:16:17.107 回答