1

我正在使用这个示例来解码/编码一些我正在从/发送到 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 分钟设置一次。

我应该在最后使用 delete base64 吗?删除是否会释放 base64 使用的所有内容?

4

5 回答 5

4

Base64 的析构函数会自动完成。由于 Base64 存在于堆栈中,因此将为您调用析构函数。您不需要手动释放此代码中的任何资源,除了可能的“临时”。但是,您需要为此检查 Base64 文档。

于 2010-05-24T19:09:04.300 回答
3

base64在本地存储中。它超出范围并在块的末尾被破坏。剩下的唯一问题是temp. 如果它的内存由 拥有base64,那么你不需要delete任何东西。

于 2010-05-24T19:10:10.677 回答
2

base64 将在上下文结束时自动删除。你不能删除它(如果你删除 &base64 小猫会死)。

base64 的析构函数应该删除它不再需要的所有内容。关于温度,它取决于库。您必须检查文档。

于 2010-05-24T19:10:20.427 回答
1

不,base64是堆栈分配的,并且返回的指针指向decode()一个数组,该数组是该类的数据成员:

class Base64 {
    // ...
    char dst[MAX_LEN];
};

char* Base64::decode(char *src) {
    // ...
    return dst;
}

dstBase64当实例超出范围时将自动释放。

于 2010-05-24T19:08:07.407 回答
0

base64 在堆栈上分配,一旦离开作用域就会被销毁。这里不需要delete任何东西。

于 2010-05-24T19:09:07.747 回答