OpenCVのMatデータ、またはVectorデータを共有メモリに渡す方法が分からず困っています。
ポインターの使い方の理解不足かもしれませんが、アドバイス頂ければとても有難いです。

boost/interprocess/managed_shared_memoryを使ってMatのデータを共有メモリ上に保存して別のプロセスに渡したいと思い、下記のようにして渡したところassignの中で落ちてしまいます。
エラー等は一切出ませんでした。

managed_shared_memory shmd(create_only, DEPTHNAME, WIDTH_PIC * HEIGHT_PIC * 4 + 1024);

interprocess_mutex* mxd = shmd.construct<interprocess_mutex>("TheMutex")();

std::vector<float> *ptrd=shmd.construct< std::vector<float> >("DepthImage")(); 
//ロック
mxd->lock(); 
//共有メモリに書き込み
ptrd->assign((float*)decodedDepthData2.datastart,(float*)decodedDepthData2.dataend);
//ロックを解除
mxd->unlock();

※cv::Mat decodedDepthDataはCV_32FC1の横:WIDTH_PIC 縦:HEIGHT_PICの深度画像です。

ポインタ型にしなければコピーできるようで

下記のようにしてvector型の変数に値を入れることができています。


cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」);   

//copy vector to mat   

vector< float> Vf2;   

//copy mat to vector   

Vf2.assign((float*)M.datastart, (float*)M.dataend);   

しかし、下記のようにポインタ型のvector変数にコピーしようとした場合
最初に書いたshared memoryと同じようにAssignの途中でエラーも吐かずに落ちてしまいます。


cv::Mat M=Mat(480,480,CV_32FC1,「the data ....」);   

//copy vector to mat   

vector< float> *Vf2;   

//copy mat to vector   

Vf2->assign((float*)M.datastart, (float*)M.dataend);  

shared memoryにMatのデータを渡してやるにはどうすればよいでしょうか?

どなたかアドバイス下さい。