c++结构体指针申请空间
时间: 2024-12-13 13:23:13 浏览: 1
C++实现不定长数组
在 C++ 中,如果你想要为结构体分配内存并使用结构体指针指向它,通常有几种方法:
1. **静态内存分配(栈上)**: 如果结构体大小固定且不需要动态增长,可以直接在函数内部使用 `new` 或 `malloc` 分配空间,例如:
```cpp
struct MyStruct {
int a;
char b[10];
};
MyStruct* ptr = new MyStruct(); // 或者使用 malloc(sizeof(MyStruct))
```
记得在使用完后用 `delete` 或 `free` 释放内存。
2. **动态内存分配(堆上)**: 如果结构体大小未知或需要动态调整,可以使用 `new` 或 `std::make_shared` 分配空间,并通过 `std::unique_ptr` 或 `shared_ptr` 来管理生命周期:
```cpp
struct MyStruct {
// ...
};
std::unique_ptr<MyStruct> ptr(new MyStruct());
// 或者使用 shared_ptr
std::shared_ptr<MyStruct> ptr(std::make_shared<MyStruct>());
```
3. **数组或动态数组**:如果要表示结构体的集合,可以使用数组 `new[]` 或动态数组 `std::vector`:
```cpp
std::size_t size = 5;
MyStruct* arr = new MyStruct[size]; // 数组形式
std::vector<MyStruct> vec(size); // 动态数组形式
```
同样,别忘了在适当的时候使用 `delete[]` 或 `vec.clear()` 和 `vec.shrink_to_fit()` 来释放内存。
阅读全文