0

ソースのデバッグ: http://www.cppblog.com/Files/mymsdn/cvector-bug-vs2008-201007101651.zip

こんにちは、コードを修復しました。助けてくれてありがとう! 私のコードの正しいバージョンをダウンロードできます。

ソース: http://www.cppblog.com/Files/mymsdn/cvector-vs2008-20100710.rar

ベクトルの C 言語バージョンを作成しようとしています。void ** apRootを使用してポインター ベクトルを示します。メモリを malloc するよりも、 void ** p を利用できるようにしたい。

このような :cvector_ptr_ptr = &cvector_ptr;

cvector_ptr_ptrを各関数に渡して処理します。

私のコードで、未処理の例外が発生しました。オーバーランを読んだと思います。しかし、関数では、サイズの値を取得するために"insert"使用できます。を関数(*cvector_ptr_ptr)->element_sizeに渡しますが、同じコードを使用して値を取得することはできません。cvector_ptr_ptr"insert_copy"[(*cvector_ptr_ptr)->element_size]

私がどうかしましたか、まずいことでもありましたか?

4

2 に答える 2

1

問題は、「create_vector_n」関数にあります。

cvector_ptr_ptr = &cvector_ptr;
return cvector_ptr_ptr;

スタック変数(cvector_ptr)へのポインターを返していますが、これはひどく間違っています。

于 2010-07-10T09:49:51.593 に答える
0

あなたのコードには多くの問題があると思います。本当に明らかな問題の 1 つは

offset = ((*cvector_ptr_ptr)->count + 1) * element_size;
                                    ^^^
                            this is the problem

追加する最初の要素は、 ではなくオフセット 0 に書き込む必要がありますelement_size

于 2010-07-10T09:44:10.137 に答える