c – 在控制结构块中定义变量
如果我在控制结构的块中定义一个变量,它是否仅存在于该控制结构块的执行中而不存在于封闭函数的整个执行中?
另外,我如何监视程序的确切内存使用情况及其变化(即:通过创建和销毁变量来改变内存使用情况)? 后来添加: void func () { if (true) { int v;//automatic storage class v = 1; } } 解决方法
这取决于您声明变量的位置而不是定义它. 该变量只能在您声明它的范围内访问.如果您明确传递它,但是如果它保持有效则取决于变量的存储类型,可以在范围之外访问它. 好读:
我相信您会希望获得有关动态分配对象的信息,因为自动对象只能在其范围内存活足够长时间,它们将自动销毁,因此它们通常不会导致任何问题. 对于动态对象您可以使用内存分析工具(如valgrind with Massif)或replace 编辑:解决更新的问题.
当声明它的作用域开始并且声明它的语句被执行时,就会创建v.一旦达到范围,即销毁v. 通过这个小的修改过的code sample,演示和验证对象的创??建和销毁很简单: #include<iostream> class Myclass { public: Myclass(){std::cout<<"nIn Myclass Constructor ";} ~Myclass(){std::cout<<"nIn Myclass Destructor";} }; void func() { std::cout<<"nBefore Scope Begins"; if (true) { Myclass obj;//automatic storage class } std::cout<<"nAfter Scope Ends"; } int main() { std::cout<<"nBefore Calling func()"; func(); std::cout<<"nAfter Calling func()"; return 0; } 输出是:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |