[Linux] 函式原型不合造成的意外 crash 問題

[Linux] 函式原型不合造成的意外 crash 問題

今天遇到了奇特的 crash 問題…

修改了程式之後,在 Linux 上編譯成功,執行起來卻掛掉了…

找了半天,最後才發現是函式原型 (function prototype) 跟真正的函式不一樣導致的~

沒想到編譯器沒有能找出這樣的問題,真是令人意外!

不過也有可能是因為我們用的編譯器有點舊了… 😛

 

原本的函式是長這樣:

bool parse_result_xml (const char* sz_file_path)
{
    // do something here

    return true;
}

而原本也有一個相對應的函式原型,運作良好:

extern bool parse_result_xml (const char* sz_file_path);

 

後來因應需要而改動函式,多加了一個參數:

bool parse_result_xml (const char* sz_file_path, std::map<std::string, std::string>* p_map_name_value_pairs)
{
    // do something here

    return true;
}

但相對應的函式原型沒有改到…

奇怪的是編譯時沒有問題!執行的時候才壞掉了~~

是一個值得小心的問題呀…是有可能潛藏 crash 的地方~

(本頁面已被瀏覽過 135 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料