小编biv*_*biv的帖子

C#中布尔值的大小是多少?它真的需要4个字节吗?

我有两个带字节和布尔数组的结构:

using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct1
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public byte[] values;
}

[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct2
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
    public bool[] values;
}
Run Code Online (Sandbox Code Playgroud)

以下代码:

class main
{
    public static void Main()
    {
        Console.WriteLine("sizeof array of bytes: "+Marshal.SizeOf(typeof(struct1)));
        Console.WriteLine("sizeof array of bools: " + Marshal.SizeOf(typeof(struct2)));
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

sizeof array of bytes: 3
sizeof array of bools: 12
Run Code Online (Sandbox Code Playgroud)

似乎boolean需要4个字节的存储空间.理想情况下boolean ,只需要一点(falsetrue,01 …

c# interop

136
推荐指数
2
解决办法
2万
查看次数

分配大文件

我需要分配大小接近50千兆字节的文件,但是这段代码:

RandomAccessFile out = new RandomAccessFile("C:\\hello.txt", "rw");
out.setLength(50 * 1024 * 1024 * 1024); // 50 giga-bytes
Run Code Online (Sandbox Code Playgroud)

抛出异常:

Exception in thread "main" java.io.IOException: ??????? ????????? ????????? ?? ???? ????? ??????? ?????
    at java.io.RandomAccessFile.setLength(Native Method)
    at Experiment.main(Experiment.java:8)
Run Code Online (Sandbox Code Playgroud)

:尝试在文件开头之前移动文件指针.

当我尝试分配50兆字节这样的异常不会抛出.磁盘的可用空间远大于所需的文件大小.

java

6
推荐指数
1
解决办法
350
查看次数

为什么WebGL“清除”吸引前缓冲区?

为什么不需要交换缓冲区或glFinish?

<!DOCTYPE html>
<html>
    <head>
        <title>Game v.0.0</title>
        <script>
            var gl = null;
            function startGame()
            {   {   var canvas = document.getElementById('gameCanvas');
                    var glNames = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"];
                    for (var glNameI = 0; glNameI < glNames.length; ++glNameI)
                        try
                        {   gl = canvas.getContext(glNames[glNameI]);
                            if (gl) break;
                        }
                        catch(e)
                        {}
                    if(!gl)
                    {   canvas.outerHTML = "<a>WebGL NOT SUPPORTED? :(</a>";
                        return;
                    }
                }

                window.onkeydown = function(ev)
                {   switch(ev.keyCode)
                    {
                    case 49:// 1 key
                        gl.clearColor(0.3,0.7,0.2,1.0);
                        gl.clear(gl.COLOR_BUFFER_BIT); 
                        break;
                    case 50:// 2 key
                        gl.clearColor(0.3,0.2,0.7,1.0);
                        gl.clear(gl.COLOR_BUFFER_BIT); 
                        break;
                    }
                }; …
Run Code Online (Sandbox Code Playgroud)

javascript webgl

1
推荐指数
1
解决办法
1046
查看次数

标签 统计

c# ×1

interop ×1

java ×1

javascript ×1

webgl ×1