第 7 章 內(nèi)存分配
問(wèn)題列表:
7.1 為什么這段代碼不行?
char *answer; printf("Type something:\n");
gets(answer); printf("You typed \"%s\"\n", answer);
7.2 我的strcat() 不行.我試了char *s1 = "Hello, "; char *s2 = "world!"; char *s3 = strcat(s1, s2); 但是我得到了奇怪的結(jié)果。
7.3 但是strcat 的手冊(cè)頁(yè)說(shuō)它接受兩個(gè)char * 型參數(shù)。我怎么知道(空間) 分配的事情呢?
7.4 我剛才試了這樣的代碼char *p; strcpy(p, "abc"); 而它運(yùn)行正常?怎么回事?為什么它沒有崩潰?
7.5 一個(gè)指針變量分配多少內(nèi)存?
7.6 我有個(gè)函數(shù), 本該返回一個(gè)字符串, 但當(dāng)它返回調(diào)用者的時(shí)候, 返回串卻是垃圾信息
7.7 那么返回字符串或其它集合的爭(zhēng)取方法是什么呢?
7.8 為什么在調(diào)用malloc() 時(shí), 我得到“警告: 整數(shù)賦向指針需要類型轉(zhuǎn)換”?
7.9 為什么有些代碼小心地把malloc 返回的值轉(zhuǎn)換為分配的指針類型。
7.10 在調(diào)用malloc() 的時(shí)候, 錯(cuò)誤“不能把void * 轉(zhuǎn)換為int *” 是什么意思?
7.11 我見到了這樣的代碼char *p = malloc(strlen(s) + 1); strcpy(p,s); 難道不應(yīng)該是malloc((strlen(s) + 1) * sizeof(char))?
7.12 我如何動(dòng)態(tài)分配數(shù)組?
7.13 我聽說(shuō)有的操作系統(tǒng)程序使用的時(shí)候才真正分配malloc 申請(qǐng)的內(nèi)存。這合法嗎?
7.14 我用一行這樣的代碼分配一個(gè)巨大的數(shù)組, 用于數(shù)字運(yùn)算: double*array = malloc(300 * 300 * sizeof( double )); malloc() 并沒有返回null, 但是程序運(yùn)行得有些奇怪, 好像改寫了某些內(nèi)存, 或者malloc() 并沒有分配我申請(qǐng)的那么多內(nèi)存, 云云。
7.15 我的PC 有8 兆內(nèi)存。為什么我只能分配640K 左右的內(nèi)存?
7.16 我的程序總是崩潰, 顯然在malloc 內(nèi)部的某個(gè)地方。但是我看不出哪里有問(wèn)題。是malloc() 有bug 嗎?
7.17 動(dòng)態(tài)分配的內(nèi)存一旦釋放之后你就不能再使用, 是吧?
7.18 為什么在調(diào)用free() 之后指針沒有變空?使用(賦值, 比較) 釋放之后的指針有多么不安全?
7.19 當(dāng)我malloc() 為一個(gè)函數(shù)的局部指針?lè)峙鋬?nèi)存時(shí), 我還需要用free() 明確的釋放嗎?
7.20 我在分配一些結(jié)構(gòu), 它們包含指向其它動(dòng)態(tài)分配的對(duì)象的指針。我在釋放結(jié)構(gòu)的時(shí)候, 還需要釋放每一個(gè)下級(jí)指針嗎?
7.21 我必須在程序退出之前釋放分配的所有內(nèi)存嗎?
7.22 我有個(gè)程序分配了大量的內(nèi)存, 然后又釋放了。但是從操作系統(tǒng)看, 內(nèi)存的占用率卻并沒有回去。
7.23 free() 怎么知道有多少字節(jié)需要釋放?
7.24 那么我能否查詢malloc 包, 可分配的最大塊是多大?
7.25 向realloc() 的第一個(gè)參數(shù)傳入空指針合法嗎?你為什么要這樣做?
7.26 calloc() 和malloc() 有什么區(qū)別?利用calloc 的零填充功能安全嗎?
7.27 alloca() 是什么?為什么不提倡使用它?
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢時(shí)間匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |