[英]Possible causes for pointer value change in C?
我有一個功能
void* fn( void* ptr ){...}
我用作pthread中的啟動方法。 在函數中的某個地方,我遇到一個錯誤,即ptr
(通常指向一個結構)從其原始值更改為0x100000000000000(從printf("%p")
),盡管函數fn
沒有任何位置被賦給我只讀取其值,例如ptr->value
。 有任何想法嗎?
在調用的函數中可能是緩沖區溢出。
假設是Linux系統,我通常使用GDB 硬件觀察點調試此類錯誤。
您也可以通過valgrind
運行程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.