有するメモリ位置Iは、次のコードを持っている:C++配列ポインタ
#include <iostream>
using namespace std;
int *growArray (int* p_values, int cur_size)
{
int *p_new_values = new int[ cur_size * 2 ];
for (int i = 0; i < cur_size; ++i)
{
p_new_values[ i ] = p_values[ i ];
}
delete p_values;
return p_new_values;
}
int main()
{
int next_element = 0;
int size = 10;
int *p_values = new int[ size ];
int val;
cout << "Please enter a number: ";
cin >> val;
while (val > 0)
{
if (size == next_element + 1)
{
cout<< "Im in If"<<endl;
p_values = growArray(p_values, size);
}
p_values[ next_element ] = val;
cout << "Please enter a number (or 0 to exit): ";
cin >> val;
}
}
このコードはdynamicllyメモリを割り当てています。私はこのコードのすべてを理解することができます。この場合の目的は何ですか?どんなに多くのインプットを与えても、プログラムは決してそれに入りません。文がtrueに評価されていないと同じ第1の要素が上書きされている場合
'のようになります。 ? –
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
私もこれに気づきました...このコードは本からのものです。私は間違っているとは思わない。しかし、私は知りません.. –