64,654
社区成员
发帖
与我相关
我的任务
分享
小弟在内存管理方面不怎么明白,假设我在某个函数里面,如:
void func(char* _str)
{
// 字符串指向内容、地址是否为空的判断(是这样判断吗?我希望这个里面有合法的值)
if ( NULL == *_str || NULL == _str )
return ;
// 下面是关于strcpy、ZeroMemory和vector合起来运用的一些疑问
char tempStr[255];
vector<char *> vctStr;
strcpy(tempStr, _str);
vctStr.push_back(tempStr);
// 昨晚上面这些,我需要将tempStr清空吗?
ZeroMemory(tempStr, strlen(tempStr));// 这里清空时strlen(tempStr)需要+1吗? +1的话是不是会把结束符'\0'给清除掉,下次就没结束符了?
// 这里清空以后,vecStr里面压入的的内容也会被清空,如果不清空的话,像这种局部字符数组变量应该是不会照成内存泄露的对吗?
// 假设上面不用tempStr[255],而用new出来的*tempStr
char *tempStr = new char[strlen(_str) + 1];
vector<char *> vecStr;
strcpy(tempStr, _str);
vctStr.push_back(tempStr);
// 这样的话就必须要删除了new出来的temStr了,不然肯定会有内存泄露,但是删除了的话,vecStr里面也空了
// 也就是说只能用tempStr[255]这种,不过又浪费了很多空间,没必要一定用255大小,请问如何能精确到该用多少用多少呢??
}