gpt4 book ai didi

c++ - 为什么在指向对象的指针数组周围存在未初始化的堆内存? (C++)

转载 作者:行者123 更新时间:2023-11-28 06:31:07 24 4
gpt4 key购买 nike

我使用了三个结构:

struct namedPlace{
string name, key;
double lat, lon, interdist, interref;
intersections * inter;
namedPlace * next;

namedPlace(){next = NULL;}

namedPlace(string k, string n, double la, double lo, double c, double i, namedPlace * ne){
key = k;name = n; lat = la; lon = lo;interref=c; interdist = i; next=ne;}
};


struct Node{
namedPlace * head;

Node(){head=NULL;}

void insertInNode(namedPlace * place)
{ if(head==NULL) cout<<"NULL";
namedPlace * hold = head;
head = place;
place -> next = hold; }
};

struct haash{
Node ** nArr;

haash(){nArr=NULL;}

void HashMap() {
nArr = new Node*[30000];
}

void insertInHash(const int entry, namedPlace *in)
{ nArr[entry]->insertInNode(in); }
};

主要是我有:

  haash h;
h.HashMap();
for(int i = 0; i <20; i++)
{
//code to get values to insert in node
namedPlace * np = new namedPlace(postal, namePlace, lattt, longgg, intersectReff, distanceToIntersection,NULL);
int hashVal = h.hasher(np->key);
h.insertInHash(hashVal,np);
}

当我尝试检查节点结构中的 head 是否为 NULL 时,程序中断(运行时错误)。我被引导相信这种情况正在发生,因为 head 周围有一些未定义的行为,但我很困惑,因为我相信我用我的构造函数将它初始化为 NULL。有人告诉我 nArr[entry] 是 CDCDCDCD,正如已经指出的那样,这是由于未初始化的堆内存造成的。如何正确初始化它?

最佳答案

 nArr[entry]->insertInNode(in);

这可能是个问题,因为 nArr[entry] 是 NULL。

关于c++ - 为什么在指向对象的指针数组周围存在未初始化的堆内存? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com