我是 C/C++ 新手并正在开发 C++ 应用程序。我对 new 和 malloc 有疑问。我的应用程序有点复杂,而且还有一些 C 结构。在某些时候,我想为 MyData 类型的类(包含双端队列)分配新内存,后来我将该指针分配给 C 结构中的指针。我的代码的较小版本如下。
#include <deque>
class MyData
{
public:
MyData(){};
~MyData() {};
std::deque<int>& GetDequeMyDataSet() {return deque_MyDataSet; };
private:
std::deque<int> deque_MyDataSet;//contains ohlc data for the symbol
};
int _tmain(int argc, _TCHAR* argv[])
{
MyData* pMyData = new MyData();
MyData* p_Data = (MyData*)malloc(sizeof(MyData*));
p_Data = pMyData;
p_Data->GetDequeMyDataSet().push_back(10);
p_Data->GetDequeMyDataSet().push_back(11);
//.... Several other push back and operations releated to this deque goes here.
delete pMyData;// At the end I free both memories.
free(p_Data);
return 0;
}
在为两个指针分配内存后,我在 malloc 指针 (p_Data) 上使用了 GetDequeMyDataSet() 方法。我的问题是是否可以将项目 push_back 到这个 malloc 指针上的双端队列,因为我只为指针分配了内存?malloc 可以处理双端队列的动态内存分配吗?