私はを持っており、毎回特定のバイト数で配列を割り当てます。C - ダイナミックアレイのメモリリークのメモリリーク
printf
を使用すると、自分のデータがこの配列にロードされていることがわかります。
function1 (other arguments, CvPoint2D32f* array1)
そしてIはfunction1
を呼び出して、別の変数(配列2)に配列1データを割り当てたfunction2
があります。
function2(other stuff, CvPoint2D32f* array2)
私は、私は自分のデータにアクセスすることができないことがわかりますprintf
を使用しています。私は3番目の変数にデータを代入する私のメインプログラムによって
function2
と呼ばれるプログラムが印刷さ0.000 .. ...
私が検索し、私は検索が、間違っているものを見つけることができません。
ポインタを渡すだけでは十分ではありませんか?私は十分に特異的ではなかった場合
ヘルプ、私に尋ねる:
function1(IplImage* grey, IplImage* image, CvPoint2D32f *array1){
int array_counter = cvFindContours(grey, storage_color, &colorcontoursizeof(CvContour),
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
array1 = (CvPoint2D32f*)malloc(array_counter*sizeof(CvPoint2D32f))
if (array_counter == 0){
printf("Error allocating memory or Just a colour missing!!!\n\n\n");
free(Man);
}
cvReleaseMemStorage(&storage_color); // Releasing memory.
free(Man);
return array_counter;
}
int function2(IplImage* image, CvPoint2D32f *array2, other stuff){
...other stuff...
// Find the contours for the different colors.
r_counter = function1(image1, image2, array2);
return 0;
}
EDIT ========================== =============
私はここに投稿する前にそれをしようとしましたが、ここに問題があります。
非クラス型のCvPoint2D32fについてarray1のデータをロードする行でコンパイルするとエラーが発生します。
私はエラーを取得し、これらの行で何をすべきかです:
array1[cnt].x = (tpt1.x + tpt2.x)/2;
array1[cnt].y = (tpt1.y + tpt2.y)/2;
第二EDIT ======================= ==
両方の回答が助けられ、正しいものでした。みんなありがとう!問題は解決された。 私はfunction1からfunction2へ、そしてfunction2からmainプログラムにデータをエクスポートするための両方の関数へのダブルポインタを使用しました。私はたくさんの助けになった一時変数を使いました。それほど混乱はありませんでした。
質問に使用されているのと同様のキーワードを使用している場合、おそらく答えは見つからないでしょう...少なくともコードや何かを投稿してください... –
コードを投稿できますか? – Maciej
今後の質問については、[コードをマークアップする方法](http://stackoverflow.com/editing-help)をご覧ください。 – spraff