堆和栈

今天遇到的一个傻逼问题!!!简直了

在这段代码内要根据输入的值得到一个圆的对象,并且将这个对象的地址放到图像管理这个类的一个图像列表里。

while(-1!=input_type) {
        if(2==input_type) {
            Circle a;
            std::cout << "Center X: "; 
            is >> a._x; 

            std::cout << "Center Y: "; 
            is >> a._y; 

            std::cout << "Radius: "; 
            is >> a._radius;
            handle().figureList.push_back(&a);
            cout<<&a<<endl<<a._x;

        }

然后再将这个圆的数据从其他的函数里输出

cout<<handle().figureList.front()->_x<<endl;

**但是 发现这里输出的值一直是一个非常奇怪的值并不是当时添加时这个圆对象的值。
后来发现 简直是太傻逼了。。。。
在创建圆的对象的时候是Circle a;这样的方式创建的一个局部变量 在栈上!!!
当输入结束的时候,这个圆对象已经被释放了!!!所以就算我们保存了这个圆的地址,
再去想得到这个圆的数据的时候,也是错误的数据!!!
只有Circle* a = new Circle;这样的创建方式将这个圆创建在堆上,输入结束的时候才不会被释放!!!!**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值