<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # stackalloc(C# 參考) **stackalloc** 關鍵字用于不安全的代碼上下文中,以便在堆棧上分配內存塊。 ``` int* block = stackalloc int[100]; ``` ## 備注 關鍵字僅在局部變量的初始值中有效。下面的代碼導致編譯器錯誤。 ``` int* block; // The following assignment statement causes compiler errors. You // can use stackalloc only when declaring and initializing a local // variable. block = stackalloc int[100]; ``` 由于涉及指針類型,因此 **stackalloc** 要求[不安全](https://msdn.microsoft.com/zh-cn/library/chfa2zb8.aspx)上下文。有關更多信息,請參見 [不安全代碼和指針(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/t2yzs44b.aspx)。 **stackalloc** 類似于 C 運行庫中的 [_alloca](https://msdn.microsoft.com/zh-cn/library/wb1s57t5.aspx)。 以下代碼示例計算并演示 Fibonacci 序列中的前 20 個數字。每個數字是先前兩個數字的和。在代碼中,大小足夠容納 20 個 **int** 類型元素的內存塊是在堆棧上分配的,而不是在堆上分配的。該塊的地址存儲在 fib 指針中。此內存不受垃圾回收的制約,因此不必將其釘住(通過使用 [fixed](https://msdn.microsoft.com/zh-cn/library/f58wzh21.aspx))。內存塊的生存期受限于定義它的方法的生存期。不能在方法返回之前釋放內存。 ``` class Test { static unsafe void Main() { const int arraySize = 20; int* fib = stackalloc int[arraySize]; int* p = fib; // The sequence begins with 1, 1. *p++ = *p++ = 1; for (int i = 2; i < arraySize; ++i, ++p) { // Sum the previous two numbers. *p = p[-1] + p[-2]; } for (int i = 0; i < arraySize; ++i) { Console.WriteLine(fib[i]); } // Keep the console window open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } } /* Output 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 */ ``` ## 安全性 不安全代碼的安全性低于安全替代代碼。但是,通過使用 **stackalloc** 可以自動啟用公共語言運行時 (CLR) 中的緩沖區溢出檢測功能。如果檢測到緩沖區溢出,進程將盡快終止,以最大限度地減小執行惡意代碼的機會。 ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 參考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [C# 關鍵字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx) [運算符關鍵字(C# 參考)](https://msdn.microsoft.com/zh-cn/library/bewds7kc.aspx) [不安全代碼和指針(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/t2yzs44b.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看