草庐IT

SIZEOF_ALIGNOF

全部标签

c++ - 在 typedef 结构体上使用 sizeof 运算符

这可能太明显了。但是,尽管许多stackoverflow线程讨论了这个问题的不同方面,但我找不到具体的答案。typedefstruct_tmp{unsignedinta;unsignedintb;}tmp;intmain(){intc=10;if(c我将这个程序编译为-g++-lstdc++a.cpp我得到一个错误-expectedprimary-expressionbefore‘)’token我想我遗漏了一些非常明显和直接的东西。但似乎无法确定它:-/谢谢! 最佳答案 5.3.3Sizeof[expr.sizeof]1)Thesi

c++ - strlen 和 sizeof 对于基于指针和数组的 String 初始化的不同答案

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:C:differencesbetweenpointerandarrayDifferentsizeofresults基本上,我是这样做的......char*str1="Sanjeev";charstr2[]="Sanjeev";printf("%d%d\n",strlen(str1),sizeof(str1));printf("%d%d\n",strlen(str2),sizeof(str2));我的输出是7478我无法给出为什么sizeofstr1为4的原因。请解释它们之间的区别。

c++ - sizeof(struct) 返回意外值

这应该很简单,但我不知道在哪里寻找问题:我有一个结构:structregion{public:longlongintx;longlonginty;longlongintwidth;longlongintheight;unsignedcharscale;};当我执行sizeof(region)时,它给了我40而我期望33。有什么想法吗?(mingwgcc,winx64操作系统) 最佳答案 它正在填充结构以适应8字节边界。所以它实际上占用了40个字节的内存-sizeof返回了正确的值。如果您希望它只占用33个字节,请指定packed属性

test_sizeof

test_sizeof//结论://sizeof(arrU8)得到的大小是u8类型数组的**定义大小**,在初始化的时候用//strlen(arrU8)得到的大小是u8类型数组的**实际大小**,在复制的时候用//sizeof((char*)arrU8),把一个u8*转成char*,在32位机器上结果是4,64位机器上是8//sizeof((char*)arrU8)是输出一个指针的大小//要打印u8类型的数组,直接arrU8就可以了,不用加(char*);#include#include#includetypedefunsignedcharu8;intmain(void){ u8arrU8[1

c++ - sizeof() std::vector (C++)

关于这个主题已经有一个主题,但我仍然有疑问。计算一个vector的大小,哪个是正确的:sizeof(VEC)+sizeof(int)*VEC.capacity()或VEC.capacity()*(sizeof(VEC)+sizeof(int)) 最佳答案 vector的大小是什么意思?vector对象的大小刚好sizeof(vec);如果你对vector在堆上分配了多少内存感兴趣,你可以使用vec.capacity()*sizeof(T)因此,如果您添加这些,您将获得由于vector而“丢失”了多少内存。vec.capacity()

windows - 我可以一直假设 sizeof(GUID)==16 吗?

windowsheader中GUID的定义是这样的:typedefstruct_GUID{unsignedlongData1;unsignedshortData2;unsignedshortData3;unsignedcharData4[8];}GUID;但是,没有定义没有包装。由于结构成员的对齐取决于编译器实现,因此可以认为此结构的大小可能超过16个字节。如果我可以假设它始终为16个字节-我使用GUID的代码更加高效和简单。但是,这将是完全不安全的-如果编译器出于某种原因在成员之间添加一些填充。我的问题是否存在潜在原因?或者是sizeof(GUID)!=16实际上真的为0的场景的概率

ruby-on-rails - 为什么安装 Ruby on Rails 会产生错误 "size of array ' ruby​​_check_sizeof_voidp' is negative”?

在安装RubyonRails时(通过geminstallrails),您可能会收到以下错误消息:c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:109:14:error:sizeofarray'ruby_check_sizeof_voidp'isnegative还会有很多这样的警告:c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:1333:12:warning:casttopointerfromintegerofdifferentsize[-Wint-to-pointer-cast]还有一个错误c:/Ruby193

C语言----C语言中sizeof的用法

【原文链接】sizeof是计算变量在内存的占空间的大小,单位是字节(1)使用sizeof查看数据类型占空间大小如下,可以查看C语言中各种基本数据类型的占用空间的大小#include#includeintmain(){ printf("sizeof(char):%d\n",sizeof(char)); printf("sizeof(short):%d\n",sizeof(short)); printf("sizeof(int):%d\n",sizeof(int)); printf("sizeof(long):%d\n",sizeof(long)); printf("sizeof(longlong

C++面试八股文:了解sizeof操作符吗?

某日二师兄参加XXX科技公司的C++工程师开发岗位第10面:面试官:了解sizeof操作符吗?二师兄:略微了解(不就是求大小的嘛。。)面试官:请讲以下如何使用sizeof?二师兄:sizeof主要是求变量或者类型的大小。直接使用sizeof(type)或sizeof(var)即可。面试官:嗯。sizeof(int*)、sizeof(int**)和sizeof(int[4])各返回什么?二师兄:前两者的返回值相等。在32位操作系统中返回4,64位操作系统中返回8。sizeof(int[4])返回16,是因为sizeof运算时数组不会退化为指针。面试官:如果一个int*p=nullptr,那么对其

swift - 无法使用类型为 'sizeof' 的参数列表调用 '([Double])'

我在调用sizeof时收到此错误消息。/Users/MNurdin/Documents/iOS/xxxxx/ViewController.swift:46:58:Cannotinvoke'sizeof'withanargumentlistoftype'([Double])'我的代码letwts:[Double]=[-30,20,20]letweights:NSData=NSData(bytes:wts,length:sizeof(wts))我做错了什么? 最佳答案 不要在实例上使用sizeof(),它需要一个类型。请改用sizeof