【发布时间】:2020-08-05 21:27:37
【问题描述】:
我有 2 个简单的结构,一个有第二个的数组。
访问第二个时,我的程序在 Visual Studio 中崩溃,但在代码块中没有。
所以一条线不工作,另一条线。
谁能解释一下原因?
struct buffer {
uint64_t size;
void* data;
};
struct list_of_buffers {
uint64_t number_of_buffers;
bool* active_buffers;
struct buffer* array_of_buffers;
}buffer_list;
void alloc_fun(int size){
buffer_list.array_of_buffers = (struct buffer*)calloc(0, sizeof(struct buffer) * size);
//this one makes my program crash
buffer_list.array_of_buffers[0].data = NULL;
//this one doesnt
struct buffer tmp = buffer_list.array_of_buffers[0];
tmp.data = NULL;
}
谁能解释一下?
【问题讨论】:
-
请显示minimal reproducible example,包括您为
buffer_list.array_of_buffers分配内存的位置和方式 -
怎么回事?那么 calloc 是做什么的呢?
-
没关系,我看错了代码。尽管您仍然没有显示您提供了什么输入以及
id是什么 -
操作我忘了改变那个 id
-
实际上,
calloc(0,的意思是你为 0 个元素分配空间——仍然是 0(因此你不能通过buffer_list.array_of_buffers[x]访问任何元素)
标签: c++ c visual-studio struct