malloc 之后使用memset初始化
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (NULL == p)
{Baidu Nhomakorabea
exit (1);
}
memset(p, 0, sizeof(char) * 10);
}
以下的代码是由问题的--该方法被多次频繁调用,buf指向的动态内存也是被重复创建,释放。但可能都是指向同一块堆内存。没有初始化的话,除第一次外buf中的内容总是有上几次字符转码的残留字符:
malloc之后使用memset初始化
动态分配内存之后初始化:
1.使用malloc--malloc的问题是如果该块内存没有使用过的话第一次运行都是正确的。之后如果重分配再使用,内存的值是不会自动清空的。!!所以再分配时需要初始化下
main()
{
char *p = (int *)malloc(sizeof(char) * 10);
}
else
{
return -1;
free(buf);
buf = NULL;
}
des.assign(buf,strlen(buf));
std::cout << des << endl;
free(buf);
buf = NULL;
}
else
{
return -2;
}
char* buf = (char*)malloc(src_length * 2 * sizeof(src_length));
if(buf != NULL)
{
convert(src.c_str(), src.size(), buf, src_length * 2 * sizeof(src_length) );
{Baidu Nhomakorabea
exit (1);
}
memset(p, 0, sizeof(char) * 10);
}
以下的代码是由问题的--该方法被多次频繁调用,buf指向的动态内存也是被重复创建,释放。但可能都是指向同一块堆内存。没有初始化的话,除第一次外buf中的内容总是有上几次字符转码的残留字符:
malloc之后使用memset初始化
动态分配内存之后初始化:
1.使用malloc--malloc的问题是如果该块内存没有使用过的话第一次运行都是正确的。之后如果重分配再使用,内存的值是不会自动清空的。!!所以再分配时需要初始化下
main()
{
char *p = (int *)malloc(sizeof(char) * 10);
}
else
{
return -1;
free(buf);
buf = NULL;
}
des.assign(buf,strlen(buf));
std::cout << des << endl;
free(buf);
buf = NULL;
}
else
{
return -2;
}
char* buf = (char*)malloc(src_length * 2 * sizeof(src_length));
if(buf != NULL)
{
convert(src.c_str(), src.size(), buf, src_length * 2 * sizeof(src_length) );