带指针的静态结构数组

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_ 也是静态的吗?它们位于何处(堆、堆栈)?如果它们不是静态的,那么如何使它们成为静态的?

数组allocationsalloc_memory_成员是静态的,但指向的内存不一定是静态的。

在您的情况下,由于您在 main 中使用 numa_alloc_onnode 分配了它们,这意味着它们指向动态存储。

如果你真的也想静态存储,可以在结构体前定义内存:

static char buffer1[1024];
static char buffer2[2048];

static struct allocation allocations[] = 
{ {1024, buffer1}, {2048, buffer2} };