我有一个结构type
,我想初始化一个指向此指针的全局数组。因此,我做了static block_t *list_array[9] = {NULL};
并将其初始化为null。
预计该程序将被重复调用,这意味着必须重新初始化全局变量,因此当我在初始化函数中再次设置static block_t *list_array[9] = {NULL};
时,我得到了一个编译器警告,提示“未使用的变量”,因此我无法t找出问题所在。
因此,我尝试遍历数组并将每个数组都设置为NULL
-->
for (int i = 0; i <= 8; i++) { list_array[i] = NULL; }
现在的问题是,在初始化函数的范围内,这可以正常工作,但是当我尝试在另一个函数中访问此list_array时,它给出一个错误,提示
cannot access memory at ....
该声明位于文件级别,我正在尝试在同一文件本身中访问它。
static block_t *list_array[9] = {NULL}; bool mm_init(void) { /* some code has been removed because not relevant*/ for (int i = 0; i <= 8; i++) { list_array[i] = NULL; } return true; }
现在当我尝试使用其他功能访问
list_array[i]
时,>]static block_t *find_bucket(size_t bucket_size) { block_t *free_start; for (int i = 0; i <= 7; i++) { if (bucket_size <= (size_t)buckets[i]) { free_start = list_array[i]; return free_start; } } free_start = list_array[8]; return free_start; }
我一步步调试器,当我尝试
p list_array[0]
时,它给我一个错误,提示cannot access memory at 0x0
,但如果我在mm_init
中执行了同样的操作,则它会显示(block_t*) 0x0
我有一个结构类型,我想初始化一个指向它的全局指针数组。所以我做了static block_t * list_array [9] = {NULL};声明并将其初始化为null。该程序是...
for (size_t i = 0; i <= 8; i++) { list_array[i] = NULL; }
此方法有效。