参考:http://blog.csdn.net/cc214042/article/details/52728924

使用堆与栈,一维数组

  1. 1 //定义长度为size的数组
  2. 2 //在栈上
  3. 3 int array[size];
  4. 4
  5. 5 //在堆上
  6. 6 //C++语法 new delete
  7. 7 int *array = new int[size]
  8. 8 //释放
  9. 9 delete[] array;
  10. 10
  11. 11 //C语法
  12. 12 int *array =(int *)malloc(size)
  13. 13 //释放
  14. 14 free(array)

View Code

二维数组的使用

  1. 1 //在栈上创建
  2. 2 int array[M][N]
  3. 3
  4. 4 //传递给子函数
  5. 5 void func(int array[M][N]){
  6. 6 //M可以省略,N不能,编译器确定移动内存的间距
  7. 7 }
  8. 8
  9. 9 //在堆上创建
  10. 10 //C++
  11. 11 int **array = new int*[M]
  12. 12 for(int i = 0; i < M; i++){
  13. 13 array[i] = new int[N];
  14. 14 }
  15. 15
  16. 16 //C
  17. 17 (int **)malloc(M * sizeof(int*))
  18. 18 (int *)malloc(N*sizeof(int))
  19. 19
  20. 20 //传递给子函数
  21. 21 void func(int **arr, int M, int N){
  22. 22
  23. 23 }
  24. 24
  25. 25 //释放
  26. 26 for(int i = 0; i < M; i++){
  27. 27 delete[] array[i];
  28. 28 }
  29. 29 delete[] array;

View Code

关于malloc  new  calloc 的比较:

参考:https://www.cnblogs.com/wgang171412/p/5046235.html

  1. 1 //原型
  2. 2 void *malloc(int size);
  3. 3 //使用
  4. 4 int *p;
  5. 5 p = (int *)malloc(sizeof(int))
  6. 6 //返回类型为void* ,而new返回指定类型的指针,并自动计算所需要大小
  7. 7
  8. 8 //new 数据类型
  9. 9 //new 数据类型(初始值)
  10. 10 //new 数据类型(常量表达式)
  11. 11
  12. 12 int *p1 = new int[100];
  13. 13 //返回类型为 int* 整数型指针,分配大小为 sizeof(int) * 100
  14. 14
  15. 15 int *p2 = new int(2);
  16. 16 int *p3 = new int[1000];
  17. 17
  18. 18 void *calloc(size_t numElements, size_t sizeOfElement);
  19. 19 //分配空间大小 = numElements * sizeOfElement
  20. 20 //malloc分配的空间可能被使用过,存在遗留数据
  21. 21 //calloc分配的空间会自动初始化为零

View Code

 

版权声明:本文为feinaio2017原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/feinaio2017/p/8331382.html