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;

mallocC++ を使用しているため、およびについてはすべて忘れてくださいfree。ヒープ割り当てはC++ で実行さnewれます。delete

于 2013-02-27T17:16:17.107 に答える