2024年6月14日发(作者:)

malloc 之后使用memset初始化

动态分配内存之后初始化:

1.使用malloc--malloc的问题是如果该块内存没有使用过的话第一次运行都是正确

的。之后如果重分配再使用,内存的值是不会自动清空的。!!所以再分配时需要初始化下

main()

{

char *p = (int *)malloc(sizeof(char) * 10);

if (NULL == p)

{

exit (1);

}

memset(p, 0, sizeof(char) * 10);

}

以下的代码是由问题的--该方法被多次频繁调用,buf指向的动态内存也是被重复创

建,释放。但可能都是指向同一块堆内存。没有初始化的话,除第一次外buf中的内容总

是有上几次字符转码的残留字符:

char* buf = (char*)malloc(src_length * 2 * sizeof(src_length));

if(buf != NULL)

{

convert(src.c_str(), (), buf, src_length * 2 * sizeof(src_length) );

}

else

{

return -1;

free(buf);

buf = NULL;

}

(buf,strlen(buf));

std::cout << des << endl;

free(buf);

buf = NULL;

}

else

{

return -2;

}