私は再びポインタを覚えようとしましたが、数値を入力するとエラーが表示されました。私はp_array++;
に問題があることを知っているp_array ++の後に "Project.exeがブレークポイントをトリガしました"。 in Visual Studio 2015
// Includes
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
// Variables
int amount;
// Main function
int main()
{
cout << "How many numbers should be in this array: ";
cin >> amount;
int *p_array;
p_array = new int[amount];
for (int i = 0; i < amount; i++)
{
cout << (int)p_array << endl;
p_array++;
}
delete[] p_array;
_getch();
return 0;
}
: はここにソースです。
また、Code :: Blocksでこれをコンパイルしようとしたときに、コードブロックでコンパイルするとがに変更されました。
P.S.私はC++に新たなんだ:私はp_array
にpointer
に格納されたアドレスを割り当てられ、その後delete[] p_array;
前に名前pointer
とp_array
の保存された元のアドレスとポインタを作っ
// Includes
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
// Variables
int amount;
int *pointer;
// Main function
int main()
{
cout << "How many numbers should be in this array: ";
cin >> amount;
int *p_array;
p_array = new int[amount];
pointer = p_array;
for (int i = 0; i < amount; i++)
{
cout << (int)p_array << endl;
p_array++;
}
p_array = pointer;
delete[] p_array;
_getch();
return 0;
}
:P
問題は 'delete [] p_array;'にあります。バグの理由は 'p_array'はループ内でインクリメントしたためにnewを使って割り当てられたアドレスを指していないということです。 – drescherjm
@drescherjmありがとう!あなたのヒントを使って修正しました。 – fantoro