zoukankan      html  css  js  c++  java
  • 栈控件临时对象的分配原则

    今天调试代码发现自己有一个很基本的问题一直没有意识到:在一个函数里定义的临时对象,在后来再进入该函数时该临时对象并没有在栈上开辟新的空间。如下:

    struct A

    {

      char szName[128];

      int nValue;

    };

    void CXXX::Do()

    {

      A dTemp;

      int n =1;

      int b = 2;

      ...

      strcpy(dTemp.szName, "1111");

      dTemp.nValue = 2;

    }

    在第一次定义过dTemp后再进入Do(),断点设在int n处发现dTemp的地址和第一次一样,由于A中没有构造,发现dTemp里的值还是上一次的值"1111"。一直以为临时对象是用一次在栈上分配一次,貌似这个观念错误了,临时对象的分配原则貌似还很智能的节约了一把。也许这就是为什么需要构造和析构原因吧。

  • 相关阅读:
    VSCode配置Python开发环境
    图像特征——边缘
    关于相机内参中的焦距fx和fy
    摄影变换和仿射变换
    为什么要引入齐次坐标
    链表一
    从小问题看懂链表
    类与对象
    排序一
    数组
  • 原文地址:https://www.cnblogs.com/CodeKnight/p/1874213.html
Copyright © 2011-2022 走看看