c语言内存操作函数

1.memset

void* memset(void* s,int c,size_t n);s:源操作数,c:填充的字符,n:需要设置的大小。返回值:s的首地址。

2.memcpy

void* memcpy(void* dst,const void* src,size_t n);dst:目标内存首地址,src:源内存首地址,n:需要拷贝的字节数。返回值:dst的首地址。

3.memmove

memmove和memcpy的功能和用法一样,区别在于,当dst,src地址重叠时,memmove仍可处理。

4.malloc

void* malloc(size_t size);在动态内存中分配一块长度为size字节的连续区域,所分配的内存空间内容不确定,一般使用memset初始化。

5.free

void free(void* ptr);释放所指向的一款内存空间,ptr是任意类型的指针变量,指向被释放区域的首地址。

6.calloc

void* calloc(size_t nmemb,size_t size);在内存中分配nmemb块长度为size字节的连续区域。calloc自动将分配的内存置0.返回值,成功,返回空间的起始地址,失败,返回NULL。

7.realloc

void* realloc(void* ptr,size_t size);重新分配用malloc或者calloc函数在堆区分配的内存的大小。如果指定的地址后面有连续的空间,那么久会在已有地址基础上增加内存,如果指定的地址后面没有空间,那么realloc会重新分配新的连续内存,把旧内存的值拷贝到新内存,同时释放旧内存。ptr之前的内存地址,如果ptr=null,那么realloc和malloc功能一致。size,重新分配的内存大小。返回值,成功,返回新分配的内存地址,失败,返回NULL。

注意:程序不能有内存泄漏,同一块内存也不能释放多次,不能操作野指针。

void fun(int *tmp)

{

tmp=(int*)malloc(sizeof(int));

*tmp=100;

}

int main()

{

int *p=NULL:

fun(p);

cout<<*p;//错误,操作野指针

return 0;

}

*****************************************************

void fun1(int *tmp)

{

*tmp=100;

}

int main()

{

int* p=NULL;

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

fun(p);

cout<<*p;//ok

if(p!=NULL)

free(p);

return 0;

}









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值