对一个struct 如何用 new 分配多个阵列 和释放
时间: 2024-03-13 17:46:42 浏览: 14
对于一个 struct,可以使用 new 运算符动态地分配一个数组,并使用 delete 运算符释放内存空间。
示例代码如下:
```
struct MyStruct {
int a;
double b;
};
int main() {
// 动态分配数组
MyStruct* p = new MyStruct[10];
// 使用指针访问数组元素
for (int i = 0; i < 10; i++) {
p[i].a = i;
p[i].b = i * 3.14;
}
// 释放内存空间
delete[] p;
return 0;
}
```
在这个示例代码中,我们使用 new 运算符动态地分配了一个包含 10 个 MyStruct 类型的结构体对象的数组,然后使用指针 p 访问数组元素,并对每个元素的成员变量 a 和 b 进行赋值。最后使用 delete[] 运算符释放了该数组所占用的内存空间。
需要注意的是,使用 new 运算符分配的数组必须使用 delete[] 运算符释放,否则会造成内存泄漏。此外,使用 new 运算符分配数组时,如果结构体需要使用构造函数进行初始化,可以在 new 运算符后面传递参数。例如:
```
MyStruct* p = new MyStruct[10](); // 使用默认构造函数初始化所有元素
```
或者:
```
MyStruct* p = new MyStruct[10]{ {1, 2.0}, {2, 3.0}, {3, 4.0}, ... }; // 使用初始化列表对每个元素进行初始化
```
在使用 delete[] 运算符释放内存空间时,如果结构体包含指针成员变量,还需要手动释放这些指针成员变量所指向的内存空间。