C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在运行时提供数组大小与动态内存分配之间的区别大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > What’s the difference between a VLA and dynamic memory allocation via malloc?                                    4个
在下面的代码中,我在运行时提供了数组大小.

#include <stdio.h>

int main()
{
    int i;
    scanf("%d",&i);
    int a[i];
}

请告诉我上面的代码和使用malloc()的代码间的区别.
我知道数组存储在堆栈上,动态内存(malloc,calloc等)在堆上.
那么我的代码功能与malloc类似吗?如果没有,请解释.

解决方法

除了您的代码使用VLA,其中:

>在C99之前不存在
>作为C99的新功能推出
>现在是C11以来的可选功能

不同之处在于自动数组(VLA或静态大小的数组)在超出范围时会自动释放,因此您无法从函数返回它们,而动态分配的数据会持续存在直到它们被明确释放 – 这将在您丢失之前发生如果你不想要内存泄漏,请指向它们.

大佬总结

以上是大佬教程为你收集整理的在运行时提供数组大小与动态内存分配之间的区别全部内容,希望文章能够帮你解决在运行时提供数组大小与动态内存分配之间的区别所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。