大二上學期,曾寫過這樣的一段**
#include#include#includeint main() 就是利用malloc函式申請了比str1的少空間,然後將str1拷貝到這個空間裡,發現最後可以完整的列印出helllo world來,難道申請的記憶體不僅僅有strlen(ptr1)-2
嗎一位朋友這樣說的
「其實這種情況是正常的(當然做法是不可取的)..找點資料可以看下記憶體的最小block, 也就是說記憶體有乙個最小塊, 不管你申請得多小,也會是這麼大的.這樣是為了加快定址.
就比如,你malloc出來的位址永遠是偶數的不會是奇數(當然,前提是偶位址定址方式).
只是個人的理解,可以參考位元組對齊.」
我感覺很有道理,後來我進行了測試,只申請6個字元大小的空間,然後把乙個很長的字串付給str1 ,使得這個字串的大小一定超過那個所謂的記憶體最小塊,結果很好,果然出現了異常~
這不僅引發了思考,就是效率問題,忘記那本書上說的了,就是double和float之間最好選擇double,應為二者的效率幾乎是一樣的,但是double的精度卻比float好的多。
那我們是不是也可以申請最小一塊的記憶體呢?求朋友們的指點
由strcpy函式引起的C語言動態申請記憶體的問題
大二上學期,曾寫過這樣的一段 include include includeint main 就是利用malloc函式申請了比str1的少空間,然後將str1拷貝到這個空間裡,發現最後可以完整的列印出helllo world來,難道申請的記憶體不僅僅有strlen ptr1 2嗎 一位朋友這樣說的 ...
strcpy函式引起的思考
不呼叫庫函式,實現strcpy函式。解釋為什麼要返回char 解說 strcpy的實現 char strcpy char strdest,const char strsrc if null strdest null strsrc 1 throw invalid argument s 2 char s...
C語言 strcpy 函式
strcpy,即string copy 字串複製 的縮寫。strcpy是一種c語言的標準庫函式,strcpy把含有 0 結束符的字串複製到另乙個位址空間,返回值的型別為char c語言 strcpy 函式用於對字串進行複製 拷貝 標頭檔案 string.h 語法 原型 char strcpy cha...