2
好吧,這是一個複雜的問題,我一直試圖在過去4個月內在相當大的代碼庫中查找一個錯誤,只發生在valgrind不可用的平臺上。查找所有類/結構的所有成員從類/結構的起始處偏移了N個字節?
發生了什麼是一個單字節0x01正在寫入一個奇怪的地方(隨機發生,但它似乎總是寫在一小堆可能的地方,不管調試/釋放或哪個編譯器被使用)。我發現錯誤字節始終離開它破壞的對象的起始位置80個字節。
無論如何,有什麼工具或技巧或Visual Studio的插件,可以掃描整個代碼庫,並列出所有成員的80字節偏離他們的類的開始?
它不一定是80字節偏移量的成員。它可能很容易(也可能是)寫入該字節的緩衝區溢出。想想`struct foo {char arr [10]; void bar(){arr [80] = 1; }};`。 – Xeo 2011-12-15 00:38:05
它的80個字節從一個類的開始不是從一個數組的開始,如果它是一個數組溢出或堆棧溢出,我期望損壞的字節前後的字節也是破壞的 – TylerGlaiel 2011-12-15 00:46:51