You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序输入特定值删除动态数组时报0xC0000374内存错误求助

问题原因与修复方案

核心错误原因

  • 堆内存越界写入:你申请的数组A长度为size,合法下标范围是0 ~ size-1,但你直接用奇数取值i作为数组下标,i最终会远大于size-1,写入了数组外的堆内存,破坏了堆块的结构校验信息。你遇到的错误码0xC0000374就是Windows平台下堆已损坏的标准返回值,完全符合越界写堆的故障表现。
  • 计数逻辑冗余错误:你要生成N个奇数的平方,不需要额外计算counter变量,原有counter的计算逻辑完全偏离需求,反而进一步放大了内存越界的范围。

修复后代码

#include <iostream>
using namespace std;

int main(){
    int ok;
    do {
        int size;
        while (true) {
            cout << "Enter the number of perfect odd squares you want" << endl;
            cin >> size;
            if(size<1) {
                cout << "Enter a valid number" << endl;
                continue;
            }
            else break;
        }
        int *A = new int[size];
        // 第k个奇数为2*(k+1)-1,循环size次即可得到指定数量的结果
        for (int k=0; k<size; k++){
            int odd = 2*(k+1)-1;
            A[k] = odd * odd;
            cout << A[k] << endl;
        }
        delete[] A;

        cout << " Continue (1) or quit (0)?" << endl;
        cin >> ok;

    }while(ok==1);
}

内容的提问来源于stack exchange,提问作者Anatolijs Karpovs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:09