哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``

2007-08-24 20:15
看不懂```
为什么要在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];

2007-08-24 20:15
哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``
你声明了int *p;
然后(int *)malloc……
使类型一样呀
所以说你在前面生命的呀……

2007-08-24 20:19
哦`````那看看我下面的说法对不对```
如果定义的指针是char/float,那么:
#difine N 5
char/float *p=mallco( N*sizeof(char/float) );
这样写没有错吧``
又有一个问题``我们用mallco得到的内存单元是连续的吗?
如果是连续的话```那么 *(p+1) 可以写成 p[1] 吗?

2007-08-24 20:26
2007-08-24 20:29
2007-08-24 20:33

2007-08-24 20:36
2007-08-24 20:37
原型: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;
}

2007-08-24 20:39

2007-08-24 20:41