我正在使用this sample解码/编码我正在检索/发送到Web服务器的一些数据,我想这样使用它:
BOOL HandleMessage(UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT* r)
{
if(uMsg == WM_DESTROY)
{
PostQuitMessage(0);
return TRUE;
}
else if(uMsg == WM_CREATE)
{
// Start timer
StartTimer();
return TRUE;
}
else if(uMsg == WM_TIMER)
{
//get data from server
char * test = "test data";
Base64 base64;
char *temp = base64.decode(test);
MessageBox(TEXT(temp), 0, 0);
}
}
计时器每5分钟设定一次。
我最后应该使用删除base64吗? delete是否释放base64使用的所有内容?
答案 0 :(得分:4)
Base64的析构函数会自动完成。由于Base64存在于堆栈中,因此将为您调用析构函数。除了可能的“temp”之外,您无需手动释放此代码中的任何资源。但是,您需要检查Base64文档。
答案 1 :(得分:3)
base64
位于本地存储中。它超出范围并在块结束时被破坏。剩下的唯一问题是temp
的所有权。如果其内存归base64
所有,那么您无需delete
任何内容。
答案 2 :(得分:2)
base64将在上下文结束时自动删除。你不能删除它(如果删除& base64小猫将死亡)。
base64的析构函数应该删除它不再需要的所有东西。关于temp,它取决于lib。你必须检查文档。
答案 3 :(得分:1)
不,base64
是堆栈分配的,decode()
返回的指针是一个数组,该数组是该类的数据成员:
class Base64 {
// ...
char dst[MAX_LEN];
};
char* Base64::decode(char *src) {
// ...
return dst;
}
当dst
实例超出范围时, Base64
将自动解除分配。
答案 4 :(得分:0)
base64在堆栈上分配,一旦离开作用域就会被销毁。这里没有delete
任何内容。