带指针的静态结构数组
Static array of structs with pointers
我们有一个这样的结构数组:
struct allocation
{
size_t alloc_size_;
char* alloc_memory_;
};
static struct allocation allocations[] =
{{1024, NULL},{2048, NULL},};
稍后在 main()
它的成员 alloc_memory_
使用 numa_alloc_onnode()
初始化。
所以问题是:alloc_memory_
也是静态的吗?它们位于何处(堆、堆栈)?如果它们不是静态的,那么如何使它们成为静态的?
数组allocations
的alloc_memory_
成员是静态的,但指向的内存不一定是静态的。
在您的情况下,由于您在 main
中使用 numa_alloc_onnode
分配了它们,这意味着它们指向动态存储。
如果你真的也想静态存储,可以在结构体前定义内存:
static char buffer1[1024];
static char buffer2[2048];
static struct allocation allocations[] =
{ {1024, buffer1}, {2048, buffer2} };
我们有一个这样的结构数组:
struct allocation
{
size_t alloc_size_;
char* alloc_memory_;
};
static struct allocation allocations[] =
{{1024, NULL},{2048, NULL},};
稍后在 main()
它的成员 alloc_memory_
使用 numa_alloc_onnode()
初始化。
所以问题是:alloc_memory_
也是静态的吗?它们位于何处(堆、堆栈)?如果它们不是静态的,那么如何使它们成为静态的?
数组allocations
的alloc_memory_
成员是静态的,但指向的内存不一定是静态的。
在您的情况下,由于您在 main
中使用 numa_alloc_onnode
分配了它们,这意味着它们指向动态存储。
如果你真的也想静态存储,可以在结构体前定义内存:
static char buffer1[1024];
static char buffer2[2048];
static struct allocation allocations[] =
{ {1024, buffer1}, {2048, buffer2} };