为类的成员变量申请的空间怎么释放
时间: 2023-04-10 16:02:57 浏览: 51
在 C++ 中,为类的成员变量申请的空间可以通过类的析构函数来释放。在析构函数中,可以使用 delete 关键字来释放成员变量所占用的空间。例如:
class MyClass {
public:
MyClass() {
// 在构造函数中为成员变量申请空间
myArray = new int[10];
}
~MyClass() {
// 在析构函数中释放成员变量所占用的空间
delete[] myArray;
}
private:
int* myArray;
};
在上面的代码中,MyClass 类的构造函数中为 myArray 成员变量申请了一个长度为 10 的 int 数组,而析构函数中使用 delete[] 关键字释放了这个数组所占用的空间。这样,在 MyClass 对象被销毁时,myArray 所占用的空间也会被自动释放。
相关问题
给非point类型的结构体申请动态变量
对于非`Point`类型的结构体,申请动态内存的方法与申请普通变量的方法类似,只需要将变量类型替换为结构体类型即可。
例如,如果我们有如下定义的结构体:
```c
typedef struct {
char name[20];
int age;
double salary;
} Employee;
```
我们可以使用`malloc`函数为该结构体类型申请动态内存,具体步骤如下:
```c
Employee* emp = (Employee*)malloc(sizeof(Employee));
```
这行代码将为`Employee`类型的结构体申请内存空间,并将指向该内存空间的指针赋值给变量`emp`。
然后就可以使用指针`emp`来访问结构体的成员变量,例如:
```c
strcpy(emp->name, "Tom");
emp->age = 30;
emp->salary = 5000.0;
```
同样,使用完动态内存后,需要使用`free`函数释放内存,例如:
```c
free(emp);
```
这行代码将释放变量`emp`所指向的内存空间。
为结构体中的结构体申请堆内存
在结构体中申请堆内存,可以使用指针的方式来实现。首先声明一个指向结构体类型的指针变量,然后使用malloc函数来为其分配内存空间。接下来,可以通过指针变量来访问和操作结构体中的成员。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体类型
typedef struct {
int x;
int y;
} Point;
int main() {
// 声明指向结构体的指针变量
Point* p;
// 为指针变量分配内存空间
p = (Point*)malloc(sizeof(Point));
// 检查内存分配是否成功
if (p == NULL) {
printf("内存分配失败\n");
return 1;
}
// 访问和操作结构体的成员
p->x = 10;
p->y = 20;
// 打印结构体的成员
printf("Point的坐标:(%d, %d)\n", p->x, p->y);
// 释放内存空间
free(p);
return 0;
}
```