malloc函数使用时注意的点

1.

一定要注意使用malloc函数分配内存后一定要判断内存分配是否成功一旦不成功就需要做相关处理

2.一定要在内存使用结束后将malloc分配的内存free释放掉。

3.一定要将释放内存后的指针指向nullptr;

void  GetMemory(  char  **p,  int  num )
{
  *p = ( char  *)  malloc ( num );
}
void  Test(  void  )
{
  char  *str = NULL;
  GetMemory( &str, 100 );
  strcpy ( str,  "hello"  ); 
  printf ( str ); 
}

上面的代买就存在以上问题

1. 传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句 

1
*p = ( char  *)  malloc ( num );
后未判断内存是否申请成功,应加上:  
1
2
3
4
5
if  ( *p == NULL )
{
  ... //进行申请内存失败处理
}
同时应考虑num>0;
2. 未释放堆内存 动态分配的内存在程序结束之前没有释放,应该调用free, 把malloc生成的内存释放掉
3. printf(str) 改为 printf("%s",str),否则可使用格式化 字符串攻击

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值