在结构中调用malloc
您需要按以下方式调用在结构中调用malloc,c,C,您需要按以下方式调用malloc: struct NODE node[5000*5000]; struct NODE node2[5000*5000]; 其余代码将保持不变。malloc(5000*5000*sizeof(struct NODE))请注意,在某些系统上,如果您不想特别动态地分配存储,那么在main中编写代码会崩溃,您可以通过将变量声明移动到main之前的静态数据区域来避免堆栈大小限制。您使用的数据结构非常庞大。一般来说,这意味着您的算法有问题。sizeof(node)=
malloc
:
struct NODE node[5000*5000];
struct NODE node2[5000*5000];
其余代码将保持不变。
malloc(5000*5000*sizeof(struct NODE))代码>请注意,在某些系统上,如果您不想特别动态地分配存储,那么在main中编写代码会崩溃,您可以通过将变量声明移动到main
之前的静态数据区域来避免堆栈大小限制。您使用的数据结构非常庞大。一般来说,这意味着您的算法有问题。sizeof(node)
==>sizeof(*node)
node=malloc(5000*5000*sizeof(*node))代码>。您需要的是结构的大小,而不是指针。如果node2分配失败,请释放node1指针。习惯好习惯需要时间
struct NODE node[5000*5000];
struct NODE node2[5000*5000];
struct NODE *node, *node2;
node = malloc(5000*5000*sizeof(*node));
if (node == NULL)
{
exit(1); // or any other error check
}
node2 = malloc(5000*5000*sizeof(*node));
if (node2 == NULL)
{
exit(1); // or any other error check
}