在运行时提供数组大小与动态内存分配之间的区别
发布时间:2020-12-16 07:18:06 所属栏目:百科 来源:网络整理
导读:参见英文答案 What’s the difference between a VLA and dynamic memory allocation via malloc?????????????????????????????????????4个 在下面的代码中,我在运行时提供了数组大小. #include stdio.hint main(){ int i; scanf("%d",i); int a[i];} 请告诉
参见英文答案 >
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()的代码之间的区别. 解决方法
除了您的代码使用VLA,其中:
>在C99之前不存在 不同之处在于自动数组(VLA或静态大小的数组)在超出范围时会自动释放,因此您无法从函数返回它们,而动态分配的数据会持续存在直到它们被明确释放 – 这将在您丢失之前发生如果你不想要内存泄漏,请指向它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |