在p_array ++之后“Project.exe触发了一个断点”;在Visual Studio 2015中

时间:2016-10-31 20:18:22

标签: c++ arrays visual-studio pointers

所以我尝试再次学习指针,当我输入一个数字Visual Studio给了我一个错误。 这是来源:

// 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;
}

我知道p_array++;存在问题。

当我尝试在Code :: Blocks中编译它时,它工作得很好(我在代码块中编译时删除了#include "stadfx.h"并将_getch();更改为getch();

P.S。我是C ++的新手:P

1 个答案:

答案 0 :(得分:2)

我通过这样做来修复它:

// 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;
}

我创建了一个名为pointer的指针,并存储了p_array的原始地址,然后delete[] p_array;我将地址存储在pointerp_array

感谢drescherjm告诉我这是什么问题。

我想没人会需要这个解释,但我想在这里写一下。