记录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