これが私のコードです:C++ポインタ "エラー:ダブル無料または破損(アウト)"
uint16_t * ptemparr = new uint16_t[20];
for (int x=0;x<2;x++)
{
function(ptemparr);
ptemparr ++;
}
delete[] ptemparr;
私はこのエラーを取得することを行うと:
double free or corruption (out)
EDITED: ありがとうございましたIなぜこのエラーが発生するのか理解していますが、今はこれが良いアイデアだと思いますか?
uint16_t temparr[20];
uint16_t * ptemparr = temparr;
for (int x=0;x<2;x++)
{
function(ptemparr);
ptemparr ++;
}
このように私はスタック上にポインタを作成し、メモリリークの問題はありません。 はまた、上記のコードは、そう私はあなたがnew []
によって返されたdelete []
に同じアドレスを渡す必要があり、このような状況
インデックス作成に角括弧を使用しないのはなぜですか? – tartar
funtionはptemparrの中に配列を返します。上のコードは説明のためのものです。実際には++はptemparr = ptemparr + 4 – Kam
@Kamです。x(x = 20をコードスニペットに割り当てる)たとえ1秒に1回程度「むしろ」とは言えず、静的割り当てと動的割り当ての違いがその時間に消える傾向があるとしても、静的割り当てをうまく使用します。スタックやヒープを使用するのは味わいです。ブロックの外側でそのベクトルにアクセスする必要がある場合、ヒープは必須です。 – Enzo