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

C++结构体数组初始化后写入报错:访问违规0xC0000005求助

解决C++结构体数组输入时的访问违规问题

嘿,这个访问违规的问题其实很好解决,咱们一步步拆解来看:

首先你触发的错误提示里,写入位置0xcdcdcdcd时发生访问违规是个关键线索——这个0xcdcdcdcd是Windows调试环境用来标记未初始化堆内存的特殊值,说明你在往一块不应该被写入的内存地址里写数据了。

问题就出在这行代码上:

scanf("%d", arr[i].value );

scanf的第二个参数要求是指向变量的指针,它需要通过指针定位到存储输入值的内存位置。但你现在传的是arr[i].value——这是一个int类型的变量值,不是指针!scanf会误把这个未初始化的变量值当成内存地址,然后试图往这个地址里写入输入的整数,刚好这个地址对应了调试环境里的0xcdcdcdcd,自然就触发访问违规了。

修正方法

只需要把那行代码改成传递arr[i].value的地址就行:

scanf("%d", &arr[i].value );

另外顺便提一句:你的结构体里包含stack<int>,用new node[size]是完全没问题的,因为C++的new[]会自动为数组里的每个node对象调用默认构造函数,正确初始化losersStack这个栈容器,这部分不用额外操心~

内容的提问来源于stack exchange,提问作者Ran Lavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:31:17