C C 的型別安全

2021-07-24 14:54:36 字數 853 閱讀 9913

型別安全的**不會檢視訪問沒被授權的記憶體區域。型別安全的程式語言指的是其提供保障型別安全的機制;型別安全的程式指的是該程式沒有隱含型別錯誤。

1、c語言的型別安全

c語言只在區域性上下文中表現型別安全,例如試圖將一種型別的指標轉換成其他型別的指標時,編譯器會報錯,除非使用顯示型別轉換。

例1、printf輸出格式

void main()

void main()

void main()

例2、malloc函式的返回值

malloc函式的返回值是void *型別,通常需要相應的顯示型別轉換。但是如果出現int * p = (int *)malloc(20*sizeof(char))可能會帶來一些問題,但是此時c語言沒有報錯。

2、c++型別安全

與c語言相比,c++提供了一些新的機制保障型別安全:

(1)操作符new返回的指標型別嚴格與物件匹配,而不是void*;

(2)c中很多以void*為引數的函式可以改寫為c++模板函式,而模板是支援型別檢查的;

(3)引入const關鍵字代替#define constants,它是有型別、有作用域的,而#define constants只是簡單的文字替換;

(4)一些巨集定義可被改寫為inline函式,結合函式的過載,可在型別安全的前提下支援多種型別,當然改寫為模板

也能保證型別安全;

(5)c++提供了dynamic_cast關鍵字,使得轉換過程更加安全,因為dynamic_cast比static_cast涉及更多具體的型別檢查。

但是c++中仍然無法保證絕對的型別安全:

例1、空型別指標void *

int main()//

程式輸出結果並不是1

C C 的型別安全

什麼是型別安全?型別安全很大程度上可以等價於記憶體安全,型別安全的 不會試圖訪問自己沒被授權的記憶體區域。型別安全 常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制 有的時候也用 型別安全 形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之...

C C 型別安全的

什麼是型別安全?型別安全很大程度上可以等價於記憶體安全,型別安全的 不會試圖訪問自己沒被授權的記憶體區域。型別安全 常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制 有的時候也用 型別安全 形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之...

執行緒安全C C

對於多執行緒程式設計,很多人概念不清,寫 的時候要麼是處處加鎖,影響效能不說,還容易莫名其妙的死鎖,還有人對多執行緒敬而遠之。所以學習多執行緒程式設計最重要的不是學習api,而是理解什麼才是多執行緒安全的 從例子說起 include windows.h include process.h long ...