在我的程序中,我需要制作一个链表,但是链表的大小(节点数)是在编译时定义的。“ newcustomer.numT”变量是将要创建的节点数。为此,我认为应该有一个指针数组,然后由每个指针从堆中请求内存。但是,不幸的是,我也不知道数组的大小。我也动态地创建了它。“ transactionn”是一个将值保存在单个节点中的结构。
transactionn **asd;
asd = new transactionn*[newcustomer.numT]; //I created array of pointers
for (int k = 0; k<newcustomer.numT; k++){
asd[k] = new transactionn; //Allocating a node for each pointer in the array
} //End of the "node creating"
newcustomer.trahead = asd[0]; //Assign head to the first node
//Connecting nodes in the linked list to eachother
for (int z = 0; z < (newcustomer.numT)-1; z++){
asd[z]->next = asd[z + 1];
}
asd[newcustomer.numT]->next = NULL; //Set the next of the last node to NULL
当我编译它时,错误列表上没有错误,但是在输出中我得到了:
Critical error detected c0000374
DataHomework2.exe has triggered a breakpoint.
并在此行中触发一个断点:
asd[k] = new transactionn;
我究竟做错了什么?
编辑:我更正了最后一个索引,当它是:
asd[(newcustomer.numT)-1]->next = NULL;
当我将这些代码作为一个完整的程序编译时,没有错误,程序也不会崩溃。当我对我的主项目程序实现此功能时,再次崩溃。关键错误。
Edit2:这些行是正确的。错误的根源是由于它们从其他函数获得的值。
asd = new transactionn*[newcustomer.numT]; //I created array of pointers
//...
asd[newcustomer.numT]->next = NULL; //Set the next of the last node to NULL
您溢出了数组。所指向的数组的最后一个索引asd
是newcustomer.numT - 1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句