Tips--动态申请内存的优势

动态申请内存的优势


在刷LeetCode的时候,经常需要定义数组,很多写法使用动态申请内存的写法,比如我要申请一个二维数组,动态申请内存的写法为:

int** nums = (int **)malloc(sizeof(int*)*m);
for(int i = 0; i < m; i++){
	nums[i] = malloc(sizeof(int)*n);
}

我也可以这么写:

int nums[m][n];

既然可以这么简单的定义数组,为什么还要动态申请内存这么复杂的写法?动态分配,说简单点,就是在需要的时候,需要多少分配多少,不需要的时候释放掉。从这种说法就可以看出好处。跟花钱一样,省着花,不要的时候卖二手。如果以开始就把钱花完,万一哪天生病了急需钱,上哪里找啊。动态申请内存的特点有以下几点:

  • 当你定义了一个指针,而且要往里面写数据时,必须要动态分配内存给他。
  • 动态分配的内存在堆上,你有权利决定什么时候将他释放掉。
  • 动态分配的内存请记得一定要释放掉,不然容易引起内存泄露。
  • 栈上能分配的空间默认很小(1M)。使用动态申请的方法,可以再堆上申请比这个远远大得多的内存
    切记一定不要忘记释放掉我们动态申请的内存:
free(nums);
发布了163 篇原创文章 · 获赞 188 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_42580947/article/details/104972735