临时变量的清除,是不是一定要进行?
刚学C++,对基本的还是不清楚,网上也没有多少有用的东西!(胡乱拼了个成形的,结果debug没有问题,只是内存泄漏,但release就会有问题!所以先弄清一些基本的先)
请各位指教!
CString dAESHelper::encrypt( CString text )
{
USES_CONVERSION;
char * pText = W2A(text);
int maxLen = getChipherLen(strlen(pText));
char * pTmp = new char[maxLen];
int tmpLen = encrypt(pText, strlen(pText), pTmp);
maxLen = maxLen*2+2; //其实本来只需要maxlen*2就够了,但AtlHexEncode方法体里需要大于maxlen*2+1
char *hexData = new char[maxLen];
AtlHexEncode((LPBYTE)pTmp, tmpLen, hexData, &maxLen);
hexData[maxLen] = '\0';
CString rst;
rst.Format(L"%s", A2W(hexData));
delete[] pTmp;
delete[] hexData;
return rst;
}
以上的方法中:
1、char * pText 是不是不能delete
2、pTmp和hexData是不是还要加=NULL
3、如果我还有个临时变量:
char * aaa;
aaa=text.AllocSysString();
这个aaa是不是在定义在栈上,函数执行完后自动就清除了,不用我手工delete?
4、如果我还在里面定义了Cstring bbbb;bbbb=text;
bbbb是不是根本就不用去管它,它会自己析构?