[英]Arguments corrupted on passing in to function?
我看到了讓我難過的東西。 或許各位大俠可以給點建議。
當傳遞給不同的 function 時,似乎有效的 arguments 會損壞。
這是我的設置:
壞的 function 調用從 LibA 進入到 LibB。
LibA、LibB 和 SampleApp 都已由 Solaris x86/64 上的舊版 Sun Studio 預先編譯(幸好處於調試模式)。 SampleApp 同時使用 LibA 和 LibB 並在我的系統上運行良好。
MyApp 以類似於 SampleApp 的方式使用 LibA 和 LibB。 然而,MyApp 由於指針損壞而崩潰。
// File scoped string declared
static const char myString[] = "SomeText"
// The function call looks like
libAfunc(myString, myIntVar)
// The called function prototype is like
int libAfunc(const char* strArg, int intArg)
單步執行代碼時,我看到調用者 ( myString
) 中的指針有效並作為參數傳遞。 在被調用者中,傳入的參數指針( strArg
)中的地址完全錯誤。 其實所有參數傳入之后其實都是錯誤的。
注意:調用者在預編譯的LibA中,被調用者在預編譯的LibB中。 我什至從未接觸過該代碼,因為它都是預編譯的。 此外,代碼本身可能是正確的,因為 SampleApp 使用了這些函數,並且運行良好。 (雖然調用順序可能略有不同......)
我在想我的錯誤是在鏈接階段,但我不確定它可能是什么。
有任何想法嗎?
謝謝
你能用你的編譯器編譯 SimpleApp 嗎? 它仍然有效嗎?
我不熟悉您的特定平台,但曾經有一段時間使用某些編譯器,其中指針的大小可能不同,具體取決於所使用的編譯器選項。
如果您的編譯器正在生成(例如)64 位指針並且庫使用 32 位指針,那么您的症狀是有道理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.