在使用vector的push_back函数时,Release版下运行会出错的一个原因

   在vs2008下,当在一个结构体中有vector类型的成员时,如果在定义了一个该结构体的变量,并使用memset函数对其初始化,在debug版本下并不会有问题。但换成release版本后,程序运行会产生异常,并报如下信息:

Microsoft Visual Studio C Runtime Library has detected a fatal error in STLtest.exe.

Press Break to debug the program or Continue to terminate the program.

该问题主要是由于对结构体变量使用了memset函数,如果结构体中有vector这样的类型,使用memset会导致结构体中的某些信息丢失,从而在使用push_back函数插入数据时产生异常中断。希望我的遭遇对大家有帮助。

#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
typedef struct _structBB 
{
	int i;
	vector<int> vBBs;
}BB;
int _tmain(int argc, _TCHAR* argv[])
{
        BB bb;
	memset(&bb,0,sizeof(BB));
	bb.vBBs.push_back(1);
	return 0;
}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值