gpt4 book ai didi

c - C中二维数组的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:50 24 4
gpt4 key购买 nike

我正在编写多线程 C 程序,但出现错误。我有一个二维数组 array worker_table 全局声明为:

int **worker_table;

并在main中分配如下:

worker_table        = (int**) calloc(number_of_workers*2,(sizeof(int)));

这是辅助函数:

    void *Worker(void *worker_id)
{

my_id = (int)worker_id; //id of the worker
printf("Line 231\n");
printf("My id is %d\n",my_id);
my_customer = worker_table[my_id][1];//line 233
printf("Line 234\n");
int my id;

错误发生在第 234 行之前,我认为是第 233 行出了问题,但我无法弄清楚是什么。

最佳答案

你的分配是错误的。应该是这样的:

worker_table = calloc(number_of_workers,(sizeof(int*)));
for(int i = 0; i < 2; ++i)
{
worker_table[i] = calloc(2, sizeof(int));
}

释放过程应该是:

for(int i = 0; i < 2; ++i)
{
free(worker_table[i]);
}
free(worker_table);

我建议您阅读 a good book on C

关于c - C中二维数组的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com