差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
appendix:garbagecollectorを止める方法 [2022/03/07 09:41] fumble |
appendix:garbagecollectorを止める方法 [2022/03/07 09:58] (現在) fumble |
||
---|---|---|---|
行 8: | 行 8: | ||
というあやしげな宣言があるじゃろ、あとはわかるな?\\ | というあやしげな宣言があるじゃろ、あとはわかるな?\\ | ||
MONO_INTERNALが邪魔で見えない?心の目で見るんだ!\\ | MONO_INTERNALが邪魔で見えない?心の目で見るんだ!\\ | ||
- | 心の目をもってしても見えない?!\\ | + | 心の目をもってしても見えないじゃと?!\\ |
<code cpp> | <code cpp> | ||
typedef __int64 (CALLBACK* gcgetheapsize)(); | typedef __int64 (CALLBACK* gcgetheapsize)(); | ||
行 14: | 行 14: | ||
void 心眼() | void 心眼() | ||
{ | { | ||
- | auto module = LoadLibrary(lpszMonoParh); | + | auto module = ::LoadLibrary(lpszMonoParh); |
if (module != nullptr) | if (module != nullptr) | ||
{ | { | ||
- | auto getheapsize = (gcgetheapsize)GetProcAddress(module, | + | auto getheapsize = (gcgetheapsize)::GetProcAddress(module, |
auto heapsize = getheapsize(); | auto heapsize = getheapsize(); | ||
- | auto disable = (gcenabledisable)((__int64)GetProcAddress(module, | + | auto disable = (gcenabledisable)((__int64)::GetProcAddress(module, |
- | auto enable = (gcenabledisable)((__int64)GetProcAddress(module, | + | auto enable = (gcenabledisable)((__int64)::GetProcAddress(module, |
disable(); | disable(); | ||
enable(); | enable(); | ||
} | } | ||
- | CDialogEx:: | ||
} | } | ||
</ | </ | ||
行 46: | 行 45: | ||
00007FFAA93DB1AF CC | 00007FFAA93DB1AF CC | ||
</ | </ | ||
+ | 実装順でそれぞれの関数にジャンプするようになっておるじゃろ。\\ | ||
+ | きれいに8バイトでパディングされておるじゃろ。\\ | ||
+ | mono_gc_get_heap_size\\ | ||
+ | < | ||
+ | 00007FFAA93DB190 E9 D3 C5 13 00 | ||
+ | </ | ||
+ | mono_gc_disable\\ | ||
+ | < | ||
+ | 00007FFAA93DB198 E9 CF C6 13 00 | ||
+ | </ | ||
+ | mono_gc_enable\\ | ||
+ | < | ||
+ | 00007FFAA93DB1A0 E9 9B C6 13 00 | ||
+ | </ | ||
+ | 今度こそこれでわかるな?\\ | ||
+ | 飛んだ先が正しいかもちゃんとステップインして確認するのじゃぞ?\\ |