動態內存分配
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];
```