c语言malloc分配

项目中尝试在调用函数内malloc分配空间后在主函数中判断。第一次不用指针返回值,发现行不通,因为函数内部分配空间在都是在栈空间内,返回后全部释放。

#include <iostream>
#include <stdlib.h>
using namespace std;

void MallocTest(uint8_t*InBuff)
{
    InBuff = (uint8_t*) malloc(sizeof(uint8_t));
    cout<<"In is Success"<<endl;
}
int main()
{
  uint8_t* buf = NULL;
  MallocTest(buf);
  if(buf != NULL)
    cout<<"out is Success"<<endl;
}

如上不能得到想要的结果。

解决办法:

1、 char* fun( char *), 即返回指针的形式

2、二维指针传值

void MallocTest(uint8_t**InBuff)
{
    *InBuff = (uint8_t*) malloc(sizeof(uint8_t));
    cout<<"In is Success"<<endl;
}
int main()
{
  uint8_t* buf = NULL;
  MallocTest(&buf);
  if(buf != NULL)
    cout<<"out is Success"<<endl;
}

如上解决办法,但会存在内存泄露的问题。待解决。


另附部分malloc拾遗:

用malloc动态分配内存后一定要判断一下分配是否成功,判断指针的值是否为NULL。 

动态分配成功后,指针就不为NULL 
内存分配成功且初始化后使用时别越界了。 
内存使用完后要用free(p)释放,注意,释放后,p的值是不会变的,仍然是一个地址值,仍然指向那块内存区,只是这块内存区的值变成垃圾了。为了防止后面继续使用这块内存,应在free(p)后,立即p=NULL,这样后面如果要使用,判断p是否为NULL时就会判断出来。 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值