动态内存分配
malloc(size_t size);
malloc将用户分配size_t字节个内存并返回内存分配地址,如果分配地址失败,那么返回0
```
int*pa=(int*)malloc(4);
```
pa是分配好内存的地址4是要分配的大小
如果内存分配失败,那么pa=0
if(p==nullptr)
{
std::cout<<"内存分配失败";
}
```
void*calloc(size_t count,size_t size);
```
calloc将用户分配count乘size_t字节个内存并且返回内存分配的地址,如果分配失败,那么返回0
```
int*pa=(int*)calloc(1,4)
```
pa是分配好的内存的地址1是要分配元素个数4是要分配的每个个数的大小
如果内存分配失败,那么pa=0
calloc会将分配好的内存区域设置为0
```
free(p);
frpp(pm);
```
C++内存分配
数据类型*指针变量名称=new 数据类型;
```
int*pa=new int;
```
数据类型*指针变量名称=new数据类型【数量】;
```
int*pa=new int[5];//分配一段能够存放5个int变量的内存空间
```
*分配失败pa返回0
## calloc方法
```
int main()
{
unsigned x;
std::cout << "分配内存空间";
std::cin >> x;
int* p{};
p = (int*)calloc(x, sizeof(int));
//int*p = (int*)malloc(x * sizeof(int));
if (p == 0) {
std::cout << "内存分配失败";
}
p[0] = 500;
p[1] = 600;
p[2] = p[0] * p[1];
std::cout << p[0] << " " << p[1] << " " << p[2];
}
```
## malloc方法
```
int main()
{
unsigned x;
std::cout << "分配内存空间";
std::cin >> x;
//int* p{};
//p = (int*)calloc(x, sizeof(int));
int*p = (int*)malloc(x * sizeof(int));
if (p == 0) {
std::cout << "内存分配失败";
}
p[0] = 500;
p[1] = 600;
p[2] = p[0] * p[1];
std::cout << p[0] << " " << p[1] << " " << p[2];
}
```
## malloc方法与 calloc方法区别 calloc可以自动把没打扫的内存自动清零,但是运行效率低。
## realloc重新分配
```
void*realloc(void*_ Block,size_t_Size);
```
realloc将用户重新分配内存,_Block是用户已经分配号的内存,Size是要重新分配大大小,函数返回重新分配后的内存。
代码如下:
```
int main()
{
unsigned x;
std::cout << "分配内存空间";
std::cin >> x;
int* p{};
p = (int*)calloc(x, sizeof(int));
//int*p = (int*)malloc(x * sizeof(int));
if (p == 0) {
std::cout << "内存分配失败";
}
p[0] = 500;
p[1] = 600;
p[2] = p[0] * p[1];
std::cout << p[0] << " " << p[1] << " " << p[2];
std::cout << "请输入重新分配的内存大小";
std::cin >> x;
p = (int*)realloc(p, x);
std::cout << p[0] << " " << p[1] << " " << p[2];
free(p);
}
```
## 释放内存
## void free(void*-Block);
free(p指针);
//释放地址
# C++内存分配
C++内存分配
## 数据类型*指针变量名称=new 数据类型;
## 配套的释放内存方式为delete方法
```
int*pa=new int;
```
数据类型*指针变量名称=new数据类型【数量】;
```
int*pa=new int[5];//分配一段能够存放5个int变量的内存空间
```
*分配失败pa返回0
delete 释放内存
如果用new int[5]
释放内存就是 delete [ ] p
### 代码如下:
```
int main()
{
unsigned x;
std::cout << "分配内存空间";
std::cin >> x;
int* p{};
p = new int[5]; //分配5个
*p = 500;
p[0] = 5000;
p[1] = 1000;
p[2] = p[0] + p[1];
std::cout << p[0] << " " << p[1] << " " << p[2];
```