jjzjj

SIZEOF_ALIGNOF

全部标签

c++ - C/C++ 指针,ptr+1 = ptr +1 byte 还是 ptr+1*sizeof(pointer_type)?

有any_type*ptr=(any_type*)malloc(sizeof(any_type)*size);my_ptr=ptr+1;memcpy(dst,my_ptr,sizeof(any_type));my_ptr会指向ptr之后的1个字节,还是指向ptr之后的sizeof(any_type)字节?对齐选项如何影响答案?有符号/无符号类型是否不同? 最佳答案 指针运算是在指针的静态类型[*]的大小上进行的,所以它会有效地添加sizeof*ptr。成员的对齐方式将作为类型的对齐方式(对象末尾的填充)考虑到对象的大小。struct

C++:数组长度的sizeof

假设我有一个名为LengthOf(array)的宏:sizeofarray/sizeofarray[0]当我创建一个大小为23的新数组时,我不应该为LengthOf取回23吗?WCHAR*str=newWCHAR[23];str[22]='\0';size_tlen=LengthOf(str);//len==4为什么len==4?更新:我打错了,是WCHAR*,而不是WCHAR**。 最佳答案 因为这里的str是指向指针的指针,而不是数组。这是指针和数组之间的细微差别之一:在这种情况下,您的指针在堆栈上,指向已分配到别处(大概是堆)

c++ - 字符串 "sizeof"的意外结果

为什么sizeof在以下情况下会打印不同的值:printf("%d",sizeof("ab"));//print3char*t="ab";printf("%d",sizeof(t));//print4在第一种情况下,我有2个字符...sizeof不应该打印2吗?因为它们是2个字节? 最佳答案 StringsinCarenullterminated.内存中的“ab”看起来像'a''b''\0'而t是一个指针,所以size是4。 关于c++-字符串"sizeof"的意外结果,我们在Stack

c++ - 关于sizeof和类成员函数的一个问题

classB{public:inta;voidfn();}如果我创建B的对象,使用B*pb=newB;fn()的内存在哪里?对象中是否有指针指向fn()的内存位置?如果是,为什么sizeof(B)返回值就好像对象中根本没有指针一样? 最佳答案 Whereisthememoryoffn()locate?因为它是一个普通的函数,所以在你程序的代码部分的某个地方。此位置对于该类的所有实例都是相同的。事实上,它与通过pb实例化B无关。Isthereapointerinobjectthatpointingatthememoryloaction

c++ - C/C++ : size of a typedef struct containing an int and enum == sizeof(int)?

我在我的Ubuntu(i686)上使用gcc版本4.3.3。我写了一个精简的测试程序来描述我缺乏理解和我的问题。该程序应告诉我我实现的结构的大小。所以我有一个typedefstruct用于Message和一个小的main来玩:#includetypedefstruct{intsize;enum{token=0x123456};}Message;intmain(intargc,char*argv[]){Messagem;m.size=30;printf("sizeof(int):%d\n",sizeof(int));printf("sizeof(0x123456):%d\n",sizeo

c++ 14 vs 11 - sizeof 返回不同的值?

对于同一个程序,c++11返回212,但对于c++14,返回211给我。我很困惑..#include#includeusingnamespacestd;intmain(){chara[2];cout 最佳答案 charc[b.size()+1];在标准C++中是不允许的,任何版本。如果您发现一个编译器接受它,那么它就是一个编译器扩展,因此您应该查阅您使用的任何编译器的文档。 关于c++14vs11-sizeof返回不同的值?,我们在StackOverflow上找到一个类似的问题:

时间:2019-03-08 标签:c++sizeof(string)

#include#includeintmain(intargc,char*argv[]){cout输出:sizeofString=4这是否意味着,由于sizeof(char)=1字节(0到255),字符串只能容纳4个字符? 最佳答案 从您的示例中不清楚“字符串”是什么。如果你有:#includeusingnamespacestd;然后string是std::string,sizeof(std::string)给你类实例的大小和它的数据成员,而不是字符串的长度。为此,请使用:strings;cout

c++ - sizeof 运算符是否会导致模板参数推导发生?

我知道sizeof运算符不会评估其表达式参数来获得答案。但它不是模板的非扣除上下文之一。所以我想知道它如何与模板交互,特别是模板参数推导。例如,以下内容摘自C++模板:完整指南:templateclassIsClassT{private:typedefcharOne;typedefstruct{chara[2];}Two;templatestaticOnetest(intC::*);templatestaticTwotest(...);public:enum{Yes=sizeof(IsClassT::test(0))==1};enum{No=!Yes};};这个类型函数决定了,正如它的

c++ - std::vector 应该尊重 alignof(value_type) 吗?

如果我定义一个具有特定对齐要求的简单类型,该类型的std::vector难道不应该为每个元素遵守对齐吗?考虑下面的例子typedefstd::arrayalignas(32)avx_point;std::vectorx(10);assert(!(std::ptrdiff_t(&(x[0]))&31)&&//assertthatx[0]is32-bytealigned!(std::ptrdiff_t(&(x[1]))&31));//assertthatx[1]is32-bytealigned我发现clang3.2(带或不带-stdlib=libc++)悄悄地(没有任何警告)违反了对齐要求

c++ - GCC - 'sizeof' 之前的预期不合格 ID - Android NDK 中的 IT++ 4.2

我已成功在我的AndroidNDK项目中构建CLAPACK。接下来,我尝试将IT++4.2库放入其中。但是,我有一些无法修复的错误。这些是我在我的项目中所做的事情:首先,我将itpp文件夹复制到我项目的jni文件夹中,并修改了itpp中的config.h。因为我在(放在..android-ndk-r7b\platforms\android-9\arch-arm\usr\include中)找到了isfinite、isinf和isnan函数。我将HAVE_DECL_ISINF、HAVE_DECL_ISFINITE和HAVE_DECL_ISNAN设置为1。config.h#ifndefCON