这个首先你要搞明白堆空间和栈空间,用malloc分配的内存是在堆空间的,如果你不free,这个空间在程序的运行过程中就一直存在。如果是定义的临时的数组变量,那他是在栈里面,这个空间在函数执行完,会被系统回收。定义的数组不可能发生内存不够的现象,如果不够,编译都通不过。
肯定是不相同的 首先你的第一个是开辟的栈空间,这段空间是会释放的。而用malloc声明的是堆空间,必须要用free释放,否则空间是一直存在的。
malloc的功能是分配一块堆内存空间,并返回一个用于访问这块内存空间的地址。为了能在后面使用这块内存空间,你需要用一个*类型(也就是指针类型)变量p来备份这个地址,否则这个地址弄丢了,这块内存空间就会持续被占用却无法被使用,也就是我们所说的“内存泄漏”。现在你得到了这个地址,并把它存储在p中,那么你想要读...