string申请动态内存c++
时间: 2023-12-20 21:31:06 浏览: 192
在C++中,可以使用关键字new和delete来动态申请和释放内存。具体步骤如下:
1. 使用new关键字申请内存,返回指向该内存的指针。例如,申请一个长度为10的字符串数组:
```c++
char* str = new char[10];
```
2. 检查内存是否分配成功。如果分配失败,new会抛出std::bad_alloc异常。可以使用try-catch语句来捕获异常并处理。
3. 使用内存。例如,将字符串"hello"复制到申请的内存中:
```c++
strcpy(str, "hello");
```
4. 使用完内存后,使用delete关键字释放内存。例如:
```c++
delete[] str;
```
注意事项:
1. 使用new申请的内存必须使用delete释放,否则会导致内存泄漏。
2. 申请的内存大小必须是非负整数。
3. 在使用指针之前,必须检查指针是否为空。
4. 在释放内存后,指针不再指向有效的内存地址,应该将其设置为nullptr。
代码示例:
```c++
#include <iostream>
#include <cstring>
int main() {
char* str = nullptr;
try {
str = new char[10];
} catch (std::bad_alloc& e) {
std::cerr << "Memory allocation failed: " << e.what() << std::endl; return 1;
}
std::strcpy(str, "hello");
std::cout << str << std::endl;
delete[] str;
str = nullptr;
return 0;
}
```
阅读全文