I. char *str = "Stack";II. char *str = (char*) malloc(6); strcpy(str, "Stack");兩種方法有什么區(qū)別?它們是相同還是不同?
3 回答

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
在第一種情況下,您的指針指向const char*
在進程存儲器的只讀部分分配的a 。
在第二種情況下,您將動態(tài)分配內(nèi)存,最后將字符串“ Stack”復(fù)制到您分配的內(nèi)存中。
您最終必須使用釋放II的內(nèi)存free
。

SMILET
TA貢獻1796條經(jīng)驗 獲得超4個贊
忘記其他聲稱不正確的內(nèi)部堆棧存儲答案。(哦,現(xiàn)在這些答案已被刪除。)
case I:
您有一個指向str
內(nèi)容為的只讀存儲區(qū)(該.rodata
部分)的指針"Stack"
。
case II:
您有一個指針str
,該指針指向動態(tài)分配的區(qū)域(在堆中),其內(nèi)容為"Stack"
,該區(qū)域是可修改的,free(str)
使用后應(yīng)通過調(diào)用來釋放。
- 3 回答
- 0 關(guān)注
- 433 瀏覽
添加回答
舉報
0/150
提交
取消