c语言中malloc申请的空间和直接定义变量申请的空间有什么区别

1.一是空间分配的连续性;二是动态内存申请;三是防止程序执行中出现异常错误。

2.直接定义变量与malloc定义变量的编程含义:

malloc事先分配好了内存空间。

在c语言中,malloc函数原型为void*malloc(unsignedintslong),其作用是在内存的动态存储区中分配一个长度为slong的连续空间。次函数的返回值是分配区域的起始地址,如:char*p;p=malloc(64000);//空间不够指针为null。

如果用数组定义:charp[64000],表示的是声明了一个数组,此数组的大小64000个字节。但是,请注意要点:系统这时并没有为其分配内存,只是在使用时才分配。

3.对于超过1000字节的数组空间,建议用malloc/free,以确保数组变量的绝对正确;小的空间,直接用数组定义即可。

4.malloc可以随时开辟,不用时随时释放。这些数据是临时存放在一个特别的自用存储区,称其为堆。由于未在声明部分定义他们为变量或数组,因此不能通过变量名或数组去引用这些数据包,只能通过指针来引用。malloc分配出的空间不会被系统自动初始化,在使用前一定要初始化。

5.不管全局变量还是局部变量都是系统自动分配管理的(静态储存区和动态存储区即栈),全局变量如果不人工初始化时系统会自动初始化;对于静态局部变量,编译时自动赋初值初始化;自动局部变量不初始化,他的值是不确定的,因为每次函数调用结束后储存单元已经释放,下一次调用是又重新分配存储单元,而其中内存的内容是不知道的。

猜你喜欢

转载自blog.csdn.net/weixin_44981087/article/details/129635974
今日推荐