c語言模式
各種存儲模式之間有什麼區別?
DOS用一種段地址結構來編址計算機的內存,每一個物理內存位置都有一個可通過段地址一偏移量的方式來訪問的相關地址。為了支持這種段地址結構,大多數C編譯程序都允許你用以下6種存儲模式來創建程序:
-----------------------------------------------------------------------
存儲模式 限制 所用指針
-----------------------------------------------------------------------
Tiny(微) 代碼、數據和棧一64KB Near
Small(小) 代碼一64KB Near
數據和棧一64KB Near
Medium(中) 代碼一1MB Far
數據和棧一64KB Near
Compact(緊縮) 代碼一64KB Near
數據和棧一1MB Far
Large(大) 代碼一1MB Far
數據和棧一1MB Far
Huge*(巨) 代碼一1MB Far
數據和棧一1MB Far
-----------------------------------------------------------------------
*注意:在Huge存儲模式下,靜態數據(如數組)可以超過64KB,這在其它存儲模式下都不行。
Tiny存儲模式的限制很嚴(所有的代碼、數據和棧都被限制在64KB中),它通常用來生成"COM"文件。由於內存地址的「安排」方式的限制,Huge模式會帶來顯著的性能損失,因此它很少被使用。
最常使用的存儲模式有哪些?
最常使用的存儲模式有Small,Medium和Large這幾種。Tiny存儲模式一般只用來生成".COM"文件,在現在的高性能計算機上,它已很少被使用了。Compact存儲模式允許程序有很少的代碼和大量的數據,在今天的商業應用環境中,它同樣也不常用了。由於Huge存儲模式的存儲地址機制導致它的效率較低,所以它也很少被使用。
一般說來,你應該根據程序的大小選用Small,Medium或Large中的一種存儲模式。對一個小的實用程序來說,Small存儲模式可能是最合適的,這種存儲模式允許有64KB的代碼和64KB數據和棧。如果程序有更大一些的數據要求,你可以使用Medium存儲模式,它允許程序有多達1MB的可定址數據空間。對於更大的程序,你應該使用Large存儲模式,它允許程序有1MB的代碼和1MB的數據和棧空間。
如果你在編寫一個Windows程序或者在使用一個32位編譯程序,那麼你最好使用Small存儲模式,因為這樣的環境並不受DOS程序的段地址結構的限制。
應該使用哪種存儲模式?
如果要生成一個「.COM」文件,匭朧褂肨iny存儲模式,即所有的代碼、數據和棧空間都被限制在64KB中。小的實用程序普遍使用這種存儲模式。相對較小的程序也可以使用Small存儲模式,只不過不必把整個程序都限制在64KB中。在Small存儲模式下,有64KB的代碼空間和64KB的數據和棧空間。除了用於小程序外,Small存儲模式還可用在Windows或32位編譯程序這樣的環境中,因為在這些環境中內存定址並不受DOS中16位的限制。
如果一個程序的代碼量相對較大而靜態數據量相對較小,你可以用Medium存儲模式來創建程序。如果程序很大(需要很多模塊,大量的代碼和數據),那麼你應該選用Large存儲模式,這種存儲模式常用在DOS下編寫商用軟體。
與Small,Medium和Large存儲模式相比,Compact和Huge存儲模式要少用得多。Cornpact存儲模式允許程序有大量的靜態數據和相對較少(64KB或更少)的代碼。滿足這種模式的程序很少,常常是一些轉移程序,它們有大量必須存到內存中的靜態轉移表。Huge存儲模式與Large存儲模式基本相同,只是Huge存儲模式允許程序有超過64KB的靜態數據。與Compact存儲模式相似,Huge存儲模式也很少被使用,這主要是因為它會帶來顯著的性能損失。由於Huge存儲模式的執行效率較低,因此你應該避免使用這種模式,除非你確實需要超過64KB的一個數組或其它靜態數據。記住,數組和其它程序結構可通過malloc()和calloc()在程序運行時進行動態分配,它們在本質上並不必須是靜態的。
B. c語言圖形模式和文本模式的區別
1、c語言圖形模式顯示與文本模式顯示不同。文本模式屏幕的位置其行列坐標表示已不再適用,這時單個字元可顯示在屏幕上的任何位置。
2、另外c語言圖形模式顯示既可以水平顯示,也可以垂直顯示,字母大小也可以改變,同時可以提供幾種不同的字型。
C. C語言運行模式分哪幾種每種模式如何運行
內存分配方式有三種:
1、從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變數,static變數。
2、在棧上創建。在執行函數時,函數內局部變數的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限。
3、從堆上分配,亦稱動態內存分配。程序在運行的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete釋放內存。動態內存的生存期由程序員決定,使用非常靈活,但如果在堆上分配了空間,就有責任回收它,否則運行的程序會出現內存泄漏,頻繁地分配和釋放不同大小的堆空間將會產生堆內碎塊。
D. c語言中,再對文件的操作模式中,a和a+、w和w+、r和r+有什麼區別
r 打開只讀文件,該文件必須存在。r+ 打開可讀寫的文件,該文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
E. c語言里大模式和小模式是什麼意思
模式是指C編譯器在編譯時所採用的地址空間位.
一般有tiny,small,large,compack, huge等。
tiny:64K以內,即在一個段內運行的模式,地址為16位,數據、代碼在一個段內
small:640K以內,地址為16位,但數據、代碼不在同一個段
large:可超過640K內存空間的限制
huge:地址為32位