C#中如何使用sizeof

如题所述

sizeof可以获取某类型在内存中所占的字节数。
对于所有其他类型(包括 struct),sizeof 运算符只能在不安全代码块中使用。虽然可以使用 SizeOf 方法,但该方法返回的值和 sizeof 返回的值并不总是相同的。Marshal.SizeOf 在已封送处理类型后返回大小,而 sizeof 返回公共语言运行库分配的大小(包括任何空白)。
表达式 结果
sizeof(sbyte) 1
sizeof(byte) 1
sizeof(short) 2
sizeof(ushort) 2
sizeof(int) 4
sizeof(uint) 4
sizeof(long) 8
sizeof(ulong) 8
sizeof(char) 2 (Unicode)
sizeof(float) 4
sizeof(double) 8
sizeof(bool) 1追问

sizeof可以获取某类型在内存中所占的字节数,获得字节数后要干什么,或者说sizeof用在什么地方

追答

对于托管代码来说没什么大用,但是如果你要调用一些非托管代码,有时需要传入参数的字节数,而且它还是必填参数。

温馨提示:内容为网友见解,仅供参考
无其他回答

C#中如何使用sizeof
sizeof可以获取某类型在内存中所占的字节数。对于所有其他类型(包括 struct),sizeof 运算符只能在不安全代码块中使用。虽然可以使用 SizeOf 方法,但该方法返回的值和 sizeof 返回的值并不总是相同的。Marshal.SizeOf 在已封送处理类型后返回大小,而 sizeof 返回公共语言运行库分配的大小(包括任何...

c语言怎么看字符串占多少字节
在C语言中,可以使用sizeof()函数来确定字符串所占的字节数。在C语言中,字符串被表示为字符数组,每个字符占用一个字节。字符串的结尾以空字符'\\0'标识,该字符也占用一个字节。因此,一个包含n个字符的字符串将占用n+1个字节的内存空间。sizeof()函数是C语言中的一个内置函数,用于计算变量、类...

C#中如何获取对象实例大小?
1.使用sizeof运算符。但sizeof只有对int,byte等预定义值类型有效。2.使用System.Runtime.InteropServices.Marshal.SizeOf静态方法。此方法对任何值类型的实例有效。除此之外,引用类型的内存是分配在堆上面的,不管是C,C++还是C#,好像都只能在堆上面实例化对象,删除对象。尤其是C#,连实例化\/删除对象都有人代劳了。如...

C#中怎么获取byte[]的长度?
方法一:\\x0d\\x0abyte a = 3; \/\/定义变量\\x0d\\x0aint b = Marshal.SizeOf(a.GetType()); \/\/获取长度\\x0d\\x0a方法二:\\x0d\\x0abyte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 }; \\x0d\\x0aBitArray myBA = new BitArray(myBytes); \\x0d\\x0aint c=myBA...

C#里cvArcLength函数和cvContourArea函数具体怎么用的?能举例么?_百 ...
\/\/ 检测轮廓 Number_Object = cvFindContours (canny_image, storage, &contours, sizeof (CvContour),CV_RETR_EXTERNAL , CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));\/\/ 对轮廓进行处理 double imgArea = src_img->width * src_img->height;for(;contours;contours = contours->h_next) \/\/...

c#语言中结构体如何定义结构体数组?新手求教!
问题1:开辟sizeof(StructStudent)*5个内存空间给数组stsz,并在for循环中使用无参构造方法初始化数组中的所有成员。问题2:如果不执行循环进行初始化,无任何影响,可正常使用。结构在编译时就已经初始化,所有的成员会用默认值进行初始化,而你问题1中是在运行时初始化的。问题3:如果要保存N个结构体...

c#怎么获取一个数组的长度?
1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。通过下面例子来理解该方法:include <stdio.h>#include <stdlib.h>int main(){ int size=100;\/\/最初为100个元素空间。 int *a = NULL; int i = 0; a = malloc(sizeof(int) * size); if(a ==...

求一个C#中使用高性能数组(使用指针)的实际应用
double* pDoubles = stackalloc double [size];从这些代码段中可以看出,stackalloc的语法有点不寻常。它的后面紧跟的是要存储的数据类型名(该数据类型必须是一个值类型),其后是把需要的变量个数放在方括号中。分配的字节数是变量个数乘以sizeof(数据类型)。在这里,使用方括号表示这是一个数组。如果...

c# short数组转byte数组
在上面的示例中,首先定义一个 short 数组 shortArray。然后,使用下面的语句将其转换为 byte 数组 byteArray:byte[] byteArray = new byte[shortArray.Length * sizeof(short)];Buffer.BlockCopy(shortArray, 0, byteArray, 0, byteArray.Length);其中,使用 sizeof(short) 得到 short 类型的大小...

在C#中怎么使数组是个可变的,数组大小由用户自己输入
ARR=(Link)malloc(sizeof(Array));printf("输入n的值\\n");scanf("%d",&n);q=ARR;ARR->data=n*n;ARR->next=NULL;printf("输入元素\\n");for(i=1;i<=n*n;i++){ p=(Link)malloc(sizeof(Array));scanf("%d",&p->data);q->next=p;p->next=NULL;q=p;} return OK;} void...

相似回答