从堆分配时检测到严重错误
Critical error detected while allocating from heap
在我的程序中,我需要制作一个链表,但链表的大小(节点数)是在编译时定义的。 "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
.
在我的程序中,我需要制作一个链表,但链表的大小(节点数)是在编译时定义的。 "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
.