1樓:匿名使用者
free(str);不代表把str清空,而是說str的記憶體空間是可以寫入資料.那麼,str原來的內容當然還在,
strcpy(str, "hello")時,str開始的6個位元組(char)記憶體空間被寫上了hello五個字元和乙個結束符,因為你定義了字串位址是從str開始的,*str='c';把第乙個位元組改成了c。在記憶體沒有被重新整理的時候它就會輸出:cello,
根據linux記憶體管理,你的程式申請的記憶體實際是乙個虛位址,你釋放後,系統會把你釋放的位址加到free_list中,同乙個虛位址的,實際的實體地址可能是不一樣的。
我理解,你申請一次記憶體時,虛位址和實際實體地址的對應關係在釋放時暫時不會變,但申請兩次記憶體時,可能位址鍊錶已經變化了,再釋放,實際實體地址已經變了。
2樓:影繞心間
free函式僅僅將指標所指向的記憶體釋放,並未將指標指向null,該段**中str指標將會變成野指標,而使用野指標是一件十分危險的事情。
3樓:
這個程式本身就不正確,已經將申請的記憶體釋放了,再去訪問,是會引起程式崩潰的。很危險的做法
4樓:匿名使用者
以下全是我猜測的:
你上網搜一下free的源**就知道了,free函式只是把malloc申請到的記憶體塊中某個特殊的標誌變了一下而已,並沒有立刻就清空記憶體塊中的資料。是否釋放這塊記憶體是作業系統自己來判斷的,而且釋放後是否會對記憶體塊鏈進行調整,使記憶體碎片減少,都是用作業系統自己來進行的。
所以,我認為如果沒有第二個malloc語句的,free(str)之後這個程式申請的記憶體塊全都沒有了,這種情況下,記憶體的可使用空間已經最大了,作業系統可能會等到程式結束後再統一清理記憶體,暫時不處理記憶體塊鏈。而如果有第二個malloc語句的話,free(str)後,在記憶體塊鏈上還有分配的記憶體塊的情況下,系統可能會對記憶體塊鏈進行一定調整,以減少記憶體碎片,很可能在這個調整的過程中,str指向的那片記憶體空間的資料受到了影響,變成了髒資料,所以輸出了亂碼。
5樓:醫者仁也吧
ransition and uncertainty
一道c語言題,初學題,但是期待詳細答案o(∩_∩)o
6樓:匿名使用者
先說下以後不要用翻譯來的中文,如不會請用原英文,我想會有看得懂的。象你上面說的--從乙個字串所有的領先空格,不知是哪個翻譯**,可以關閉了。
編寫乙個名為trimrear()的c語言函式,刪除乙個字串前的所有空白字元。用指標編寫該函式。
該題主要要用到下面這函式:
int isspace(int ch) 若ch是空格(' '),水平製表符('\t'),回車符('\r'),走紙換行('\f'),垂直製表符('\v'),換行符('\n')返回非0值,否則返回0。在標頭檔案
#include 中
char * trimrear(char *str)return p;
}使用時這樣呼叫就行。
#include
#include
main()
7樓:高速路上飆單車
#include
char* trimfrnt(char * str)
main()
8樓:匿名使用者
翻譯的真差勁!
write a c function named trimfrnt()that deletes all leading blanks from a string.write the function using pointers.
寫乙個名為trimfrnt()的函式,它從字串中刪除所有的前導空格。
用指標寫這個函式。
非常簡單,如下:
char *trimfrnt(char *s)
9樓:人才
"從乙個字串所有的領先空格"
什麼意思?
求c++面試題及答案
10樓:匿名使用者
程式設計師面試寶典 第2版 ,關於c/c++的。
我有電子版,給我郵箱好傳給你
11樓:匿名使用者
12樓:匡金後方
自己在網上一搜就出來了。因為c/c++的面試題是非常多的。
13樓:刁姝環曼文
我是在這上面看的。c++面試題
愛很簡單的歌詞,愛很簡單歌詞
忘了是怎麼開始 也許就是對你 有一種感覺 忽然間發現自己 已深深愛上你 真的很簡單 愛得地暗天黑都已無所謂 是是非非無法決擇 沒有後悔為愛日夜去跟隨 那個瘋狂的人是我 喔i love you 無法不愛著你 說你也愛我 i love you 永遠不願意 baby 失去你不可能更快樂 只要能在一起 做什...
關於地球公轉的問題很簡單很簡單啊
我狂暈!這麼簡單的題目這麼多人做錯啊!正確答案是b啊,近日點的日期是一月初.一月初明白是什麼意思不?各位大哥啊!a就錯了,自然c也錯了,12.22是冬至,北半球太陽高度角達一年的最小值,過了12.22那天,太陽直射點就開始向北移動!廣州的的緯度比北京低,冬天的時候白晝比北京長!樓主我的答案你滿意!項...
來看看很簡單,很簡單的 快來看看
就是在計算右 小數的時候。4時,n舍,n 6時,n入,x.m 1 n 5,就看q,按4舍5入,保留。四捨六入五成双是一種精確度的計數保留法。這裡 四 是小於五的意思,六 是大於五的意思,五 是捨入位之後的尾數逢五的話看前一位,奇進偶不進。如1.25保留一位小數,因為2是偶數,所以是。又如1.35,因...
很簡單的彙編問題,很簡單的彙編問題
且看 ascii proc near mov si,4 mov cx,10 r2 mov dx,0 div cx add dl,30h dec si 這樣的話,有兩個辦法,1.si作為乙個返回值,你需要在返回後及時處理,或在內部處理,如在ret前加add bx,si,以便得到正確的字串首位址,2.將...
英語翻譯 很簡單,很簡單的英語怎麼寫?
1.不改。are there many cars behind the building?be on the bike the boy is on the bike.you for doing sthyour是形容詞性物主代詞,後面跟名詞。you for doing sth 動名詞或名詞。根據單詞發...