在實現乙個簡單的字元對應函式的過程中發現了這個不算是bug的錯誤:
這個錯誤出現的前提是這樣的:
main函式如下:
int main(int argc, char **argv)getnodename函式:
char *getnodename(int num)getaliasval函式printf("\n\nout of the switch:%s\n\n",nodename);
return nodename;
}
char *getaliasval(char *aliasval, int num)錯誤產生在main函式的第9行那段,else
printf("\n\nresult:\n%s\n\n",aliasval);
return aliasval;
}
該段**不能正確產生輸出,而前一句(第6行)是可以正確輸出的,具有可重複性。
在getnodename中nodename也都能正確輸出。
起初是懷疑nodename指標出的問題,
但是用gdb進行簡單的除錯之後,發現nodename指標並沒有錯誤。
於是定位到malloc()函式這裡,
因為malloc()函式之前可以正確輸出,而malloc()之後就亂了,而且每次執行的結果都不一樣。(指標的位址每次不一樣。)
做完畢業設計先……
LOCAL LISTENER 引起的錯誤
local listener l2 啟動例項的時候 會先到 tnsnames.ora 檔案裡取查詢定義名為l2的tns服務名.例項起來後會嘗試把資料庫服務註冊到address指定位址。而這個位址就是你自己定義的listener所監聽的位址,這樣oracle例項就會把資料庫服務自動註冊到非預設的 了。...
malloc函式 new和malloc的區別
1 申請的記憶體所在位置 new操作符從自由儲存區上為物件動態分配記憶體空間,而malloc函式從堆上動態分配記憶體。自由儲存區是c 基於new操作符的乙個抽象概念,凡是通過new操作符進行記憶體申請,該記憶體即為自由儲存區。而堆是作業系統中的術語,是作業系統所維護的一塊特殊記憶體,用於程式的記憶體...
malloc函式的問題
首先我們看看以下 include include include define size 0x40000 十六進製制的表示方法,等於十進位制262 144,你們要習慣用十六進製制,因為兩個十六進製制剛好是乙個位元組 int main 就是以上 你們使用vc和turbo c 分別編譯,看生成檔案的大小...