【发布时间】:2022-01-14 16:28:41
【问题描述】:
在这个程序中,有 100 次不同的运行。对于每次运行,都需要创建一个指针数组。每个数组中的指针数量由一个名为 NUM_POINTERS 的已定义常量确定。这个程序的奇怪之处在于,数组必须是静态分配的,指针指向的数据也是如此。
这是我的代码:
for (int j = 0; j < 100; j++){
SomeType *arr[NUM_POINTERS];
for (int k = 0; k < NUM_POINTERS; k++){
SomeType blah;
blah.data = NULL;
arr[k] = &blah;
}
}
现在这段代码根本不起作用。它不会为每次运行创建一个新数组,如果 arr[1] 发生变化,那么每个其他数组元素也会发生变化。
我知道解决此问题的简单方法是使用 malloc,但是这将被视为动态分配,而不是静态分配。有什么方法可以让它在静态分配所有内容的同时工作吗?
【问题讨论】:
-
现在这段代码根本不起作用。 - 不。这个代码起作用,不起作用的是你后来假设
arr包含有效的指针。不是,因为具有 自动存储类 的对象(而不是您所说的静态对象)这些指向的对象超出范围并被“销毁”。 -
答案就在您的问题中:将数组声明为
static。 -
@Barmar 帮不上忙。
blah是自动的