C语言之动态内存管理

x33g5p2x  于2021-12-08 转载在 其他  
字(0.6k)|赞(0)|评价(0)|浏览(285)

1、什么是动态内存?

2、为什么要有动态内存?

3、常见的内存错误

(1)指针没有指向一块合法的内存

(2)为指针分配的内存空间太小

(3)内存分配成功但并未初始化

(4)内存越界

(5)内存泄漏

1、什么是动态内存?

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #define N 10
  5. int main()
  6. {
  7. int* p = (int*)malloc(sizeof(int) * N); //动态开辟空间
  8. //为什么要进行强制类型转换?因为不转换的话,默认的返回类型是void *
  9. if (NULL == p) {
  10. return 1;
  11. }
  12. //一般在使用malloc开辟的空间的时候,一定要注意要检测指针的合法性,即指针是否为空
  13. //如果不检测其合法性,程序虽然不会报错,但是会出现警告(VS2019环境下)
  14. for (int i = 0; i < N; i++) {
  15. p[i] = i;
  16. }
  17. for (int i = 0; i < N; i++) {
  18. printf("%d ", i);
  19. }
  20. printf("\n");
  21. free(p); //开辟完之后,要程序员自主释放
  22. return 0;
  23. }

2、为什么要有动态内存?

3、常见的内存错误

(1)指针没有指向一块合法的内存

(2)为指针分配的内存空间太小

(3)内存分配成功但并未初始化

(4)内存越界

(5)内存泄漏

相关文章