c++从“p”中读取的数据无效: 可读大小为“n*4”个字节,但可能读取了“n”个字节

问题 :从“p”中读取的数据无效: 可读大小为“n*4”个字节,但可能读取了“n”个字节
代码
#include
using namespace std;
int main()
{
int *p;
int m, n, i ,date;
int d=0;
cin >> n;
p = new int[n];
while (d < n)
{
cin >> i;
p[d] = i;
d++;
}
for (m = 0; m < n; m++)
{
for (i =m + 1; i < n; i++)
{
if (p[i] < p[m])
{
date = p[m];
p[m] = p[n];
p[n] = date;
}
}
}
for (m = 0; m < n; m++)
cout << p[m] <<" ";
}

img

img


这里下标写错了
有帮助望采纳
你的两层循环分别用的是 mi ,但是赋值用的是 mn
修改为

#include <iostream>
using namespace std;
int main()
{
    int *p;
    int m, n, i, date;
    int d = 0;
    cin >> n;
    p = new int[n];
    while (d < n)
    {
        cin >> i;
        p[d] = i;
        d++;
    }

    for (m = 0; m < n; m++)
    {
        for (i = m + 1; i < n; i++)
        {
            if (p[i] < p[m])
            {
                date = p[m];//改为正确下标取用
                p[m] = p[i];
                p[i] = date;
            }
        }
    }
    for (m = 0; m < n; m++)
        cout << p[m] << " ";
}

即可

同时输入之后还会有奇怪的数字出来,同时也没有排序,怎么回事啊大佬们

img

img