我做了一点测试,因为我想查看sbyte和int之间文件大小的差异,但是当我将文件编译为.exe时,两者的大小均为4kb。为什么会这样呢?我被那些用Java制作4kb游戏的人着迷,但是一个hello world应用程序在c#中是4kb。
答案 0 :(得分:3)
通常来说,程序的代码会告诉CPU该怎么做-分配多少内存,在已分配的内存中放入什么,如何根据内存单元中的内容进行决策等。
程序的长度不取决于它在运行时分配的内存量,这与两条语句相同。
allocate 100 1-byte units
和
allocate 500 4-byte units
使用相同数量的字符。
区别在于运行时:第一条语句分配了100个字节,第二条语句分配了2,000个字节。这种差异不会反映在描述分配的语句的大小上。
答案 1 :(得分:0)
除其他外-如果编译为64位,则默认情况下数据类型为64位对齐。这是8个字节。这么多的内存。
但是,就您而言,实际上,您什么也没做。
Int32的长度与Int16的长度相同(实际上,它是System.Int16,全名,实际上更复杂,但现在暂时忽略它)。并且您的代码包含类型名称作为字符串。在减小变量的同时,实际上并没有更改字节的长度。