其他分享
首页 > 其他分享> > 记录calloc 出的笑话

记录calloc 出的笑话

作者:互联网

calloc 和 malloc 的不同,在于calloc开辟的空间会先进性清零操作。
项目的AT指令解析部分,使用calloc 开辟空间保存拆分后的命令,详情见代码

typedef struct g_pointer{
    uint16_t len;
    uint8_t * buff;
}s_pointer;
s_pointer state_pointer[UART_COMMAND_NUMBER];

        while( token != NULL )
        {   
            state_pointer[count_nubmer].len  = strlen(token);
            //state_pointer[count_nubmer].buff = calloc(sizeof(char), strlen(token));
            state_pointer[count_nubmer].buff = calloc(sizeof(char), strlen(token)+1);
            memcpy(state_pointer[count_nubmer].buff, token, strlen(token));
            count_nubmer++;
            token = strtok(NULL, s);
        }

state_pointer[count_nubmer].buff = calloc(sizeof(char), strlen(token) );
state_pointer[count_nubmer].buff = calloc(sizeof(char), strlen(token)+1);

这里的没有多开辟一个空间,导致后续字符串解析 ‘\0’ 的问题让人头疼,想了很多办法解决,也都可以解决,后来讨论的时候被嘲讽了 ,难道+1不是为了解决字符串 ‘\0’ 的问题吗,瞬间整个人都不好了,总体来说,我之前一直以为,多开辟几个空间就是给个心里安慰,emmmmm。
尽情的嘲笑我吧,记录一下!
2021年10月14日

标签:count,记录,nubmer,笑话,state,token,calloc,pointer
来源: https://blog.csdn.net/liuzhixin96/article/details/120776511