【发布时间】:2017-11-21 05:46:35
【问题描述】:
我是 C 编程新手。 我想做一个链表,所以我做了,但它不起作用。 在我这样做之后,我做了一个测试,但它仍然给出了一个错误。
malloc:对象 0xa000000000000000 的错误:未分配重新分配的指针
在 malloc_error_break 中设置断点进行调试
如何重新分配这个数组?
void Allocate(int **arr,int totalNum, int subNum)
{
for(int n=0;n<(totalNum+1);n++)
{
arr[n] = (int*)realloc(arr[n],(size_t)((subNum+1)*sizeof(int)));
}
}
int main()
{
int totalNum = 20;
int subNum = 5;
int **arr;
arr = (int**)malloc((totalNum+1)*sizeof(int*));
Allocate(arr,totalNum, subNum);
for(int n=1;n<(totalNum+1);n++)
{
for(int s=1;s<(subNum+1);s++)
{
arr[n][s] = rand()%5;
cout<<"arr["<<n<<"]["<<s<<"]: "<<arr[n][s]<<endl;
}
}
}
【问题讨论】:
-
我无法理解这个问题。如果您不知道,链表和数组是不同的东西
-
我是 C 编程新手。 -- 你为什么把它标记为
C++? C++ 有std::list,如果你想要一个双向链表,std::forward_list用于单链表,std::vector用于动态错误。因此没有必要像这样编码。 -
C 不是 C++,请使标签和问题正文匹配。永远不要在 C++ 中使用 malloc 或 realloc 或数组或原始指针。
标签: c++ arrays linked-list realloc