问一个比较简单的问题~~
s=(int*)malloc(sizeof(int));
这句定义的代码具体是什么意思?一般在什么情况下给变量定义需要用到这句代码的?
[解决办法]
malloc用于从堆中分配一块指定大小的内存,以void *的类型返回这块内存的起始地址。malloc的参数就是要分配的内存的大小,以字节为单位。
所以如果要分配1个整型空间就需要malloc(sizeof(int)),由于返回的void *不能直接赋值给int *,所以还要进行一次强制类型转换int * s=(int*)malloc(sizeof(int));
在堆中分配内存是很常用的操作,主要用在三种情况中:1.运行期才知到需要的内存大小。2.要分配的内存很大,不适合放在栈上。3.对内存的生存期需要有自由的控制,不能依赖栈的自动清理的情况。
[解决办法]
s应该是 int *s;
s = (int *)malloc (sizeof (int));
调用C库函数malloc动态申请内存空间,空间大小为sizeof (int),首先取得int 类型所占的内存单元数,一般是2字节。malloc调用成功会返回一个void *,s是整形指针,所以这里就用到一个强制类型转换 (int *).切记!malloc以后记得要 free ();不燃就会导致内存的浪费。