C 没有关键字可以申请堆内存,只提供了一些库函数如malloc、calloc、realloc等。而C++提供了一个一系列新的关键字来处理堆内存,那就是new和delete,下面示例代码分别编写了C和C++各种申请内存的方式。
#if __cplusplus #include <iostream> 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("%d\n", *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; }