C语言内存分配详解11


c      初始化内容

count 初始化的字节数   

返回值:

返回指向buffer的指针

  memset把buffer所指内存区域的前count个字节设置成某个字符的ASCLL值.一般用于给

数组,字符串等类型赋值.

main()

{

int *p=NULL;

int i;

char *q=NULL;

p=(int *)malloc(sizeof(int)*10);

if(p==NULL)

exit(1);

memset(p,0,sizeof(int)*10);

q=p;

for(i=0;i<10;i++)

printf("%d",*(q++));

free(p);

   执行结果是10个0.

四、memcpy

名称:

memcpy

功能:

拷贝内存空间

头文件:

#i nclude <stdlib.h>

函数原形:

void *memcpy(void *dest,void *src,unsigned int count);

参数:

dest 目标内存区

src    原内存区

count 要复制的字节数

返回值:

指向dest的指针

  memcpy会把src所指内存区复制count个字节到dest所指内存区.如果count比src

字节数大,strcpy会拷贝’\0’后结束.要注意dest和src不要重叠.

  memcpy只是拷贝内存空间,不处理空间重叠的问题.

main()

{

int *p1=NULL;

int *p2=NULL;

  int q;

int i;

p1=malloc(sizeof(int)*10);

if(p1==NULL)

exit(1);

p2=malloc(sizeof(int)*5);

if(p2==NULL)

exit(1);

memset(p1,0,sizeof(int)*10);

memcpy(p2,p1,sizeof(int)*5);

q=p2;

for(i=0;i<5;i++)

printf("%d",*(q++));

free(p1);

free(p2);

)

  运行结果为5个0.

五、memmove

名称:

memmove

功能:

拷贝(移动)内存空间

头文件:

#i nclude <stdlib.h>

函数原形:

void *memmove(void *dest,void *src,unsigned int count);

参数:

dest 目标内存区

src    原内存区

count 要复制的字节数

返回值:

指向dest的指针

  Memmove和函数memcpy函数功能一样,但只是拷贝内存空间,不处理空间重叠的问

题.Memmove会处理空间重叠问题.当dest和src重叠时,仍能正确处理,但src内容发

生改变.

六、memcmp

名称:

memcmp

功能:

比较两个内存空间的字符

头文件:

#i nclude <stdlib.h>

函数原形:

int memcmp(void *buf1,void *buf2,unsigned int count);

参数:

buf1 内存区

buf2    内存区

count 要比较的字符数

返回值:

见下面

  Memcmp会比较内存区域buf1和buf2的前count个字节.Memcmp回根据ASCLL码表

顺序依次比较.当buf1<buf2时,返回<0;当buf1=buf2时,返回0;当buf1>buf2时,返回>

0.

main()

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《C语言内存分配详解11
本文地址:http://www.xiupu.net/archives-655.html
关注公众号:嗅谱网

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!