C 經典問題總結一

2022-02-06 02:38:33 字數 1488 閱讀 1053

no. 1c#是託管語言,那麼是不是說明使用c#,就能保證不會出現記憶體洩露以及其他資源的洩漏?如果不是,那麼在哪些情況下可能出現洩漏?

答案:c#不能保證沒有資源洩漏。比如如下幾種情況可能會造成資源洩漏:(1)

呼叫native code,比如用p/invoke或者呼叫com;(2)

讀寫檔案時的,沒有及時close stream, 或者ado.net連資料庫時,沒有及時關閉連線,也算資源洩漏?(3)註冊事件後沒有remove,導致publisher和subscriber的強依

賴,垃圾**可能會被推

遲;(4).net還定義了一些方法直接申請非託管記憶體,比如marshal.allochglobal和marshal.alloccotaskmem。通過這種方式得到的記憶體,如果沒有及時釋放,也會造成記憶體洩

露。no. 2下面的兩段c#有哪些不同?

view code1

static

void catchexception1()

2     

6catch

9     }

10static

void catchexception2()

11     

15catch (exception e)

18     }

答案:兩個函式的catch都是重新丟擲截獲的exception,但丟擲的exception的call stack是不一樣的。對於第一種方法,exception的call stack是從最開始的丟擲地點開始的。對於第二種方法,exception的call stack是從catchexception2開始的,最初丟擲的地方相關的資訊被隱藏

了。no.3:執行下面的c#**,列印出來的結果是什麼?

view code

1struct person

2     

8     }

9class program

10     ;

15             array.add(isaac);

16             person first = (person)array[0];

17             first.name = "

zhang

";18             console.writeline(array[0].tostring());

19         }

20     }

答案:person的定義是乙個struct,因此是乙個值型別。在執行到語句person first = (person)array[0]的時候,first是array[0]的乙個拷貝,first和array[0]不是乙個例項。因此修改first對array[0]沒有影響。

C 經典問題

指標和引用的區別?1.指標不用初始化 但是引用不行,所以引用比指標安全 2.一經引用就不能改變引用關係 但是指標可以改變所指向的物件 3.指標可以指向空 但是引用不能引用空 4.傳參的時候 指標傳遞的是位址 引用傳遞的是本身 盡量使用引用傳參 方式發生拷貝節約時間空間 5.成員變數裡面的引用必須初始...

經典動態規劃問題總結

動態規劃引入 首先我們以乙個最基本的例子來分析 菲波那切數列。我們都知道,菲波那切數列的遞推公式f n f n 1 f n 2 這裡我就說明一般情況,不列舉邊界條件了 很簡單,如果我們用遞迴的方法來求解f n 兩三行 就出來了。那麼我們深入分析一下這樣有什麼問題?f 2 f 1 f 0 f 3 f ...

動態規劃經典問題總結

假設有幾種硬幣,如1 3 5,並且數量無限。請找出能夠組成某個數目的找零所使用最少的硬幣數。這是一道經典的動態規劃方法,我們可以維護乙個一維動態陣列dp,其中dp i 表示錢數為i時的最小硬幣數的找零,遞推式為 dp i min dp i dp i coins j 1 其中coins j 為第j個硬...