草庐IT

check_sizeof_voidp

全部标签

c++ - 打开 : check if nested parallesim

假设我有一个方法将两个std::vector相乘:doublemultiply(std::vectorconst&a,std::vectorconst&b){doubletmp(0);/*hereIcouldeasilydoaparallelizationwith*//*#pragmaompparallelloopfor*/for(unsignedinti=0;i如果我在此函数中设置pragma宏,将运行对multiply(...)的调用在所有线程上。现在假设我想在其他地方做很多vector乘法:voidmany_multiplication(std::vector*a,std::ve

centos yum/dnf 命令安装报错 Error: GPG check FAILED

centos用dnf命令安装包的时候出现包签名错误报错信息[root@localhost]#dnfinstallgitCentOS-8-AppStream388kB/s|4.4kB00:00CentOS-8-Base3.7kB/s|3.9kB00:01CentOS-8-Extras376kB/s|2.9kB00:00Dependenciesresolved.PackageArchitectureVersionRepositorySizeInstalling:gitx86_642.39.3-1.el8AppStream104kInstallingdependencies:git-corex86_

c++ - 为什么 (void)sizeof(param) 不是 "using"参数?

我有一个定义如下的宏:#defineUNREF_PARAM_1(a)do{\(void)sizeof(a);\}\while(0)去除编译器警告。在我正在处理的一个新项目中,VS2013突然再次提示未引用的形式参数。奇怪的是,如果我只使用(void)param,它确实有效。有没有人知道为什么它在与(void)sizeof(param)一起使用时不起作用? 最佳答案 因为在sizeof(param)中,param是所谓的未计算的操作数,因此未被odr使用-也就是说,不是在运行时需要。但是,(void)param确实构成了odr-use

c++ - 为什么这个数组的 sizeof() 是非法的?

我有以下数组:staticstd::pairtypemap_[];定义为std::pairtalos::Message::typemap_[8]={{talos::Message::Type::Empty,typeid(int).hash_code()},{talos::Message::Type::Keyboard,typeid(int).hash_code()},...为什么会这样sizeof(typemap_);给出一个编译时错误ErrorC2070'std::pair[]':illegalsizeofoperand即使这样sizeof(typemap_[0]);合法且数组大小固

c++ - sizeof() 的值是由编译器还是链接器决定的?

我正在尝试解决一个C++问题,我的代码的两部分为sizeof()运算符返回了不同的结果。这是我运行的MyClass*foo=newMyClass();intsize=sizeof(*foo)我将这段代码放在项目的两个不同部分,得到了两个不同的结果。一次是2254,另一次是2284。我可以查看内存布局,一个区域将内部成员显示为字节对齐,另一个区域显示为字对齐。我查看了dissasmbly,发现sizeof()值实际上是机器代码的一部分。这会是编译器或链接器中的错误吗?为什么同一个项目的两个部分会以不同的方式查看同一个类?编辑:让我提供一个更清楚的例子,我刚刚运行它来证明这不是ODR违规。

c++ - 为什么 sizeof(this - id) 返回 8?

我的代码中有一个非常愚蠢的拼写错误...is.read((char*)&this->id,sizeof(this-id));在this-之后缺少>字符有趣的是sizeof(this-id)返回了8!我的想法是...因为this是一个指针,对this做减法将导致另一个指针被id的值关闭,它可以是任何东西取决于id的值。还有...在64位系统上,指针通常是8个字节!我说的对吗?还是遗漏了什么?下面是我的类(class)。classIndexItem:publicSerializable{public:IndexItem(uint32_tid,std::streampospos):id(id

c++ - C++ 与 D 中的 sizeof 运算符和对齐

考虑以下程序:#includeclassT{charc;inti;};intmain(){std::cout由于对齐,它给出了预期的输出8。C++编译器添加3个字节的填充。但是如果我用D语言做同样的事情,它会给我完全出乎意料的输出。(参见现场演示here。)importstd.stdio;classT{charc;inti;}intmain(){writefln("sizeofTis%d",T.sizeof);writefln("sizeofcharis%d",char.sizeof);writefln("sizeofintis%d",int.sizeof);return0;}我得到的

c++ - 菱形多态继承 : sizeof Most derived Class

我知道菱形继承会导致歧义,可以通过virtualBaseClasses使用继承来避免,问题不在于此。当类是多态时,问题是关于菱形层次结构中最派生类的大小。这是示例代码和示例输出:#includeusingnamespacestd;classBase{public:virtualvoiddoSomething(){}};classDerived1:publicvirtualBase{public:virtualvoiddoSomething(){}};classDerived2:publicvirtualBase{public:virtualvoiddoSomething(){}};cl

c++ - sizeof 运算符在运行时发生变化?

这个问题在这里已经有了答案:Howsizeof(array)worksatruntime?(6个答案)关闭8年前。sizeof运算符是一个编译时运算符,但在下面的程序中它会在运行时发生变化。#includevoidfunc(inti){inta[i];printf("%d\n",sizeof(a));}main(){inti=0;while(i内存将在运行时分配。编译器如何计算没有结构填充的结构大小?

c++ - 为什么 sizeof(Base) 与 sizeof(Derived) 没有区别

我觉得sizeof(Base)应该是12,为什么是16?没有虚函数,我得到4和8。classBase{public:inti;virtualvoidPrint(){cout预期结果:12,16实际结果:16,16 最佳答案 whysizeof(Base)isnotdifferentofsizeof(Derived)因为编译器引入了对齐。这是架构相关的,但为了简单起见,我假设我们指的是64位架构。Scenario64bit/Clang8.0.类型的对齐Base是8字节数:alignOfBase():#@alignOfBase()mov