我可以用新的内存分配一块内存吗?

所以考虑到这个c结构:

typedef struct { int* arr1; int* arr2; } myStruct; 

这个答案描述了使用单个malloc同时分配myStruct和它的数组:

 myStruct* p = malloc(sizeof(*p) + 10 * sizeof(*p->arr1) + 10 * num * sizeof(*p->arr2); if(p != NULL) { p->arr1 = (int*)(p + 1); p->arr2 = p->arr1 + 10; } 

我想知道有没有类似的方法来做到这一点?
显然,我希望能够分配到我在运行时收到的大小,就像使用C示例一样。

您可以使用带有char数组的new分配内存块,然后使用placement new来调用该内存块上的构造函数。

在c ++中我们使用new因为它调用被分配对象的构造函数。 因此,实现所需内容的正确方法是让结构的构造函数执行必要的分配。

您是否有任何理由想要在您提供的链接中进行此操作? 更多的背景会有所帮助。 否则我个人只会使用构造函数来做到这一点:

  struct myStruct { int* arr1; int* arr2; myStruct(int num) { arr1 = new int[10]; arr2 = new int[10*num]; } ~myStruct() { delete[] arr1; delete[] arr2; } }; int main() { int num = 3; myStruct* a; a = new myStruct(3); delete a; }