私は C/C++ が初めてで、C++ アプリケーションを開発しています。new と malloc に問題があります。私のアプリケーションは少し複雑で、C 構造体もいくつかあります。ある時点で、タイプ MyData (deque を含む) の Class に新しいメモリを割り当てたいと思い、後でそのポインターを 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() メソッドを使用しました。私の問題は、ポインターのみにメモリを割り当てているため、この malloc ポインターの両端キューに項目を push_back してもよいかどうかです。malloc は deque の動的メモリ割り当てを処理できますか?