博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
std::vector push_back报错Access violation
阅读量:6078 次
发布时间:2019-06-20

本文共 881 字,大约阅读时间需要 2 分钟。

C/C++ code
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <vector>
#include <string>
#include <iostream>
 
struct 
Person
{
    
std::string name;
    
int 
age;
    
std::string bank_ac_no;
 
    
Person(
const 
std::string& name, 
int 
years,
        
const 
std::string& ac_no) :
        
name(name), age(years), bank_ac_no(ac_no) {}
 
    
Person() : name(
""
), age(0), bank_ac_no(
""
){}
 
};
 
int 
main(
int 
argc, 
char 
*argv[])
{
    
struct 
Person p1 = { 
"A Smith"
, 71, 
"5702750" 
};
 
    
std::vector<Person> people1(0);
    
people1.push_back(p1);
     
    
return 
0;
}

运行的时候在push_back那一句报如下的错误: 
Unhandled exception at 0x50C031CA (msvcr120d.dll) in Test15.exe: 0xC0000005: Access violation reading location 0x391F9350.
试了一下,如果不是push_back自定义的struct,而是push_back一个内置类型(比如int,string)就不会报错.
到底是怎么回事那? 请指教. 谢谢

[问题补充] 新建了一个项目, 把上面的代码拷贝过去,就没有问题. 检查了一下新项目和现在的项目,配置是一模一样的.

 

[答案]

原来我项目中的其他文件中也定义了一个struct Person, 把其他的一个struct改一下名字就好了. 

转载地址:http://jthgx.baihongyu.com/

你可能感兴趣的文章
Win7无法添加用户的问题
查看>>
DCI:DCI学习总结
查看>>
- Shell - sort处理大文件(页 1) - ChinaUnix.net
查看>>
项目管理--执行过程组
查看>>
数据访问与sql语句的管理(一)
查看>>
前端开发框架
查看>>
风 记忆
查看>>
ARM中的PC和AXD的PC
查看>>
[转]关于ios 推送功能的终极解决
查看>>
C#中使用反射获取结构体实例
查看>>
GCT之语文细节知识
查看>>
【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...
查看>>
VC中使用GetModuleFileName获取应用程序路径
查看>>
Ecshop 最小起订量如何设置
查看>>
简单JavaScript语句实现搜索关键字高亮功能
查看>>
CentOS 6上安装xfce桌面环境
查看>>
SharedPreferences的工具类
查看>>
屏幕适配那点事
查看>>
nyoj-----幸运三角形
查看>>
C166 Interfacing C to Assembler
查看>>