哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``
----------------解决方案--------------------------------------------------------
看不懂```
为什么要在malloc前加(int *)
malloc后面的(5*sizeof(int))是什么意思啊```
以前用malloc申请的空间是void型,需要强制转化成需要的类型,所以要加例如(int *)的东西。
C99规定可以直接写成p=malloc( )的形式。
至于你malloc(5)是指申请5个字节的空间。
写成malloc(5*sizeof(int))的原因是为了移植性高,因为不是所有机子上的int所占的空间都一样的,例如32位机子上一般int是2个字节,而64位机上就是4个字节了。
还有p=malloc(5);是指p指向一块大小为五个字节的内存,不是说他相当于p[5];
----------------解决方案--------------------------------------------------------
哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``
你声明了int *p;
然后(int *)malloc……
使类型一样呀
所以说你在前面生命的呀……
----------------解决方案--------------------------------------------------------
哦`````那看看我下面的说法对不对```
如果定义的指针是char/float,那么:
#difine N 5
char/float *p=mallco( N*sizeof(char/float) );
这样写没有错吧``
又有一个问题``我们用mallco得到的内存单元是连续的吗?
如果是连续的话```那么 *(p+1) 可以写成 p[1] 吗?
----------------解决方案--------------------------------------------------------
是malloc
----------------解决方案--------------------------------------------------------
应该可以
malloc是动态分配内存
----------------解决方案--------------------------------------------------------
哦``不好意思``刚学的竟然忘了```改下```
char/float *p = (char/floa *)tmallco( N*sizeof(char/float) );
这下应该没什么问题了吧````
----------------解决方案--------------------------------------------------------
晕```怎么多按了一个t```
----------------解决方案--------------------------------------------------------
原型:extern void *malloc(unsigned int num_bytes);
用法:#include <alloc.h>
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
举例:
// malloc.c
#include <syslib.h>
#include <alloc.h>
main()
{
char *p;
clrscr(); // clear screen
p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");
free(p);
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------
不过malloc的头文件看编译器而定
有的用stdlib.h
有malloc.h
还像如上
用后记得free
----------------解决方案--------------------------------------------------------