关于stl::vector中存储带指针类型成员的结构体指针

最近用到vector中存储结构体:
struct sProc
{
// 进程ID
int pid;
// 进程状态
int stat;
// 状态为0次数
int count;

char *path;
sProc()
{
pid = -1;
stat = 0;
count = 0;
path = NULL;  //关键在此出
}
};

声明一个vector如下:
vector<sProc*> list;
sProc* p = new sProc;
在非调试模式下调用list.push_back(p);出现内存不可读的错误。折腾了半天,才发现,vector在构造时,不会给指针类型成员分配空间。把结构体修改一下就可以了:
struct sProc
{
// 进程ID
int pid;
// 进程状态
int stat;
// 状态为0次数
int count;

char *path;
sProc()
{
pid = -1;
stat = 0;
count = 0;
path = new char[41];  //关键在此出
}
};

经过查看C++ primer ,向vector中push_back需要调用拷贝构造函数,所以,结构图需要实现构造函数和拷贝构造函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值