草庐IT

VARIABLES

全部标签

c++ - 堆栈上的变量是否连续?

我想知道下面代码中的数组a[]和b[]在内存中是否连续:intmain(){inta[3];intb[3];return0;}a[0]、a[1]和a[2]应该是连续的并且对于b,但是对于b相对于a的分配位置是否有任何保证?如果不是,有没有办法强制a和b彼此相邻?即-以便它们在堆栈中彼此相邻分配。 最佳答案 不,C++不保证这些变量在内存中的位置。一个或两个甚至可能不在内存中(例如,如果它们被优化掉了)!为了获得两者之间的相对顺序,至少,您必须将它们封装到struct或class中,即使那样,也会有要考虑的填充/对齐。

c++ - 对象的内存分配

当我们在c++中实例化一个变量,如函数中的intx(即x是一个局部变量)时,它被分配在进程的堆栈顶部。但是如果我们执行int*x=newint,空间将在堆中提供。所以,我的问题是:不同类(c++提供的类或用户定义的类)的对象呢?他们的对象在哪里实例化?例如:让Employee是一个类,我们声明Employeeemp;。emp在堆栈或堆中的何处给定空间->?如果声明inta[4]在一个函数内,a的所有四个单元是否都在堆栈上获得空间? 最佳答案 所有局部变量,无论是来自类的内置类型,还是数组,都在堆栈上。所有动态分配都在堆上。当然,局部

c++ - 铸件内的符号

我遇到了这段代码intn1=10;intn2=(int&)n1;我不明白这个转换的含义,n2不是引用,因为修改n1不会反射(reflect)n1。奇怪的是,这段代码在gcc中抛出编译器错误,而在VC++中编译正常。有人知道这个转换的含义吗? 最佳答案 这是完全有效的C++代码,并且可以使用g++4.4.1进行编译。它创建一个对n1的临时引用,然后使用该引用引用的值来初始化n2。如果将其表示为函数,可能更容易理解:voidf(int&n1){intn2=n1;//initialisewithvaluuereferredtobyn1}请

c++ - 如何将位从一个变量复制到另一个变量?

假设我有这个int变量v1:11001010还有这个变量intv2:10011110我需要将v2的最后四位复制到v1的最后四位,这样结果是:11001110^^lastfourbitsofv2||firstfourbitsofv1我如何才能在C或C++中执行此操作?我阅读了几篇有关按位运算的文章,但找不到任何专门关于此的信息。 最佳答案 按位运算是需要寻找的正确对象。v1=(v1&~0xf)|(v2&0xf);在阅读的文章中是否有您不理解的具体内容? 关于c++-如何将位从一个变量复制到

c++ - 如何在 C++ 中获取 bool 变量的相反值

对我来说,boolean变量表示true或false。一些boolean变量被定义并初始化为我们未知的值。我只想得到它的相反值。我应该如何在C++中执行此操作? 最佳答案 只需使用!运算符:boolx=//somethingbooly=!x;//Gettheopposite. 关于c++-如何在C++中获取bool变量的相反值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/808

c++ - std::condition_variables 可以用作计数信号量吗?

这是CanC++11condition_variablesbeusedtosynchronizeprocesses?的后续行动.std::condition_variable对象可以用作计数信号量吗?我认为不是因为对象似乎绑定(bind)到std::mutex,这意味着它只能用作二进制信号量。我在网上看过,包括here,here,和here,但找不到将这些对象用作计数信号量的引用或示例。 最佳答案 是的。structcounting_sem{counting_sem(std::ptrdiff_tinit=0):count(init)

c++ - LLVM IR : Identifying Variables with Metadata Nodes

目前我正在开发一种工具,该工具可以识别对任意程序的全局变量和字段变量的加载和存储访问。此外,访问的变量应该由它们的源级别名称/标识符来标识。为了完成这个,我将被诊断程序的源代码编译成带有调试信息的LLVMIR。到目前为止一切顺利,生成的元数据节点包含所需的源级别标识符。但是,我无法将某些LLVMIR标识符和元数据中的信息联系起来。例如,考虑一个类的静态成员:classTestClass{public:staticintNumber;};相应的LLVMIR如下所示:@_ZN12TestClass6NumberE=externalglobali32,align4...!15=!DIDeri

c++ - 是否可以锁定变量以防止在 C++ 中对其进行更改?

我正在使用一个成员变量,在程序的某个时刻我想更改它,但我更喜欢在其他任何地方“锁定它”以防止意外更改。代码解释:classmyClass{intx;//Thisshouldbepreventedtobeingchangedmostofthetimeinty;//Regularvariablemyclass(){x=1;}voidfoo1(){x++;y++;}//Thiscanchangexvoidfoo2(){x--;y--;}//Thisshouldn'tbeabletochangex//Iwantittothrowacompileerror};问题是:能否以某种方式实现?像永久c

C++ - 在 main() 函数中定义变量时遇到问题

我正在尝试从C++VisualStudio2010中的外部库定义一个变量。只有当我将它放在主函数之外时它才有效。此代码崩溃:#include"StdAfx.h"#include#includeintmain(){ogdf::Graphg;ogdf::randomSimpleGraph(g,10,20);return0;}它给了我一个未处理的异常:访问冲突。但是,如果它在main函数之外,它可以正常工作:#include"StdAfx.h"#include#includeogdf::Graphg;intmain(){ogdf::randomSimpleGraph(g,10,20);ret

C++ 变量 - 声明和定义。遗产

让我们有一个C++对象A。A中有两个变量(VAR1和VAR2)可供其子对象访问。对象B扩展了A并有一个私有(private)变量VAR3,它还可以访问VAR1和VAR2。A/B的每个实例都有自己的变量。这是声明和定义变量的正确方法吗?啊啊classA{protected:staticstd::stringconstVAR1;staticstd::stringVAR2;};A.cpp#include"A.h"usingnamespacestd;stringconstA::VAR1="blah";stringA::VAR2;B.h#include"A.h"classB:publicA{pr