Re: [問題] C 的字串與記憶體問題
看板C_and_CPP (C/C++)作者softwind (software everywhere)時間16年前 (2009/10/02 00:51)推噓2(2推 0噓 4→)留言6則, 3人參與討論串2/3 (看更多)
※ 引述《bayes (貝斯)》之銘言:
: 各位好:
: 請問下面這一段程式有什麼問題嗎
: void getMemory(char* p, int num)
: {
: p = (char*)malloc(sizeof(char)*num);
: }
: void main()
: {
: char* str = NULL;
: getMemory(str, 100);
: strcpy(str, "Hello");
: }
換個角度看
typedef char* T_Pointer;
void getMemory( T_Pointer p_, int num){
p_ = (T_Pointer*)malloc( sizeof(*p_)*num );
}
上面這個動作 你覺得對嗎?
你改 p_ 事實上 她也只是外面的copy而已
你並沒有真的 透過它的address改到任何東西~
正確版 應該是 你把address傳進去
caller:
T_Pointer ptr; //這邊就挖一塊空間了
getMemory( &ptr, 100 );
// ^^^ 把address丟進去
so 相對應的函式宣告應該是
void getMemory( T_Pointer *p_, int num);
實作的時候 就交給compiler 給你error/warning message吧
我傾向 讓你自然而然學會 閱讀compiler的message...
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.120.44
推
10/02 01:00, , 1F
10/02 01:00, 1F
→
10/02 01:04, , 2F
10/02 01:04, 2F
→
10/02 01:05, , 3F
10/02 01:05, 3F
→
10/02 01:06, , 4F
10/02 01:06, 4F
→
10/02 01:06, , 5F
10/02 01:06, 5F
推
10/02 09:33, , 6F
10/02 09:33, 6F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章