【发布时间】:2016-01-30 17:00:18
【问题描述】:
在我的程序中,我需要创建一个链表,但链表的大小(节点数)是在编译时定义的。 “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 :这些行是正确的。错误的根源在于它们从其他函数中获得的值。
【问题讨论】:
-
这意味着“堆损坏”。当您抛出原始指针时的标准错误当然,该错误位于其他地方。
-
那么这些行没有错吗? @HansPassant
标签: c++ dynamic linked-list heap-memory access-violation