【请教】void* malloc(size_t) 无法赋值

2019-08-13 20:32发布

本帖最后由 Jochen 于 2017-10-11 09:37 编辑

TIM截图20171011090922.png
[mw_shl_code=c,true]int Mqtt_InitContext(struct MqttContext *ctx, uint32_t buf_size)
{
    memset(ctx, 0, sizeof(*ctx));


    ctx->bgn = (char*)malloc(buf_size);
    if(NULL == ctx->bgn) {
        return MQTTERR_OUTOFMEMORY;
    }

    ctx->end = ctx->bgn + buf_size;
    ctx->pos = ctx->bgn;

    return MQTTERR_NOERROR;
}[/mw_shl_code]

刚开始学习stm32不久,在网上找了一份onenet的mqtt代码,打算试一试。
把代码修改到自己的工程里后,connect pack一直失败。
调试的时候发现这一句[mw_shl_code=c,true]ctx->bgn = (char*)malloc(buf_size);[/mw_shl_code]
没有成功,buf_size给的1000,调试时也是有值的,但是运行完这一句ctx->bgn还是0x00000000
对比调试了下载的那份未修改的代码,他运行完ctx->bgn是有值的,自己没有头绪了,请论坛大佬指点迷津

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
Jochen
1楼-- · 2019-08-13 21:51
liuchang 发表于 2017-10-11 10:30
如果你使用的mallco()是标准函数的话,极有可能就是你的堆空间不够用了,检查下堆内存吧

可以了!调大堆空间Heap_Size为0xC00就可以了!!!谢谢大佬
liuchang
2楼-- · 2019-08-14 00:10
如果你使用的mallco()是标准函数的话,极有可能就是你的堆空间不够用了,检查下堆内存吧
a5820736
3楼-- · 2019-08-14 00:36
 精彩回答 2  元偷偷看……
Jochen
4楼-- · 2019-08-14 01:07
a5820736 发表于 2017-10-11 09:38
ctx->bgn = (char*)malloc(buf_size);
改成 ctx->bgn = (char*)malloc(buf_size*sizeof(char));
试试呢

不行哇
Jochen
5楼-- · 2019-08-14 03:55
a5820736 发表于 2017-10-11 09:38
ctx->bgn = (char*)malloc(buf_size);
改成 ctx->bgn = (char*)malloc(buf_size*sizeof(char));
试试呢

可以了,调大堆空间Heap_Size为0xC00,也谢谢大佬

一周热门 更多>