code:
int foo[256];
和
int *bar;
bar = (int *)malloc(256*sizeof(int));
foo 和 bar 功能上是相同的定义一个array。 foo被当成一个指针,bar作为一个数组. C甚至不检查数组的界限。
两者不同之处是foo分配的内存会自动回收,当它所在的函数运行结束时,而bar的内存空间只有在使用free函数时才被释放。
还有什么不同的吗? 欢迎大家来补充
int foo[256];
和
int *bar;
bar = (int *)malloc(256*sizeof(int));
foo 和 bar 功能上是相同的定义一个array。 foo被当成一个指针,bar作为一个数组. C甚至不检查数组的界限。
两者不同之处是foo分配的内存会自动回收,当它所在的函数运行结束时,而bar的内存空间只有在使用free函数时才被释放。
还有什么不同的吗? 欢迎大家来补充
本文探讨了C语言中数组foo与指针bar的区别与联系。foo在栈上分配固定大小的空间,随函数调用结束自动释放;bar通过malloc在堆上分配空间,需手动释放。两者均可实现数组功能,但内存管理方式不同。
974

被折叠的 条评论
为什么被折叠?



