C与C++申请堆内存的不同

2023-10-20 16:40:03 浏览数 (1)

C 没有关键字可以申请堆内存,只提供了一些库函数如malloc、calloc、realloc等。而C 提供了一个一系列新的关键字来处理堆内存,那就是new和delete,下面示例代码分别编写了C和C 各种申请内存的方式。

代码语言:javascript复制
#if __cplusplus
#include 
using namespace std;
#else
#include <stdio.h>
#include <stdlib.h>
#endif
 
 
int main(int argc, char* argv[])
{
#if __cplusplus
// 申请单变量,可直接使用小括号初始化
int* p = new int(5);
// 申请数组
int* pa = new int[10];
// 申请指针数组
char **pp = new char*[5];
// 申请一个两行三列的数组指针
int (*pAp)[3] = new int[2][3];
 
// 释放单个变量空间
// 释放数组变量空间,无论数据纬度是多少,都只需要一个[]
delete p;
delete [] pa;
delete pp;
delete pAp;
#else
// 申请单变量
int* p = (int*)malloc(sizeof(int));
printf(“%dn”, *p);
// 申请数组
int* pa = (int*)malloc(sizeof(int) * 10);
// 申请指针数组
char **pp = (char**)malloc(sizeof(char*) * 5);
 
// 无论单变量还是数组等,均传递首地址即可
free(p);
free(pa);
free(pp);
#endif
 
#if __cplusplus
getchar();
#else
system(“pause”);
#endif
 
return 0;
}

0 人点赞