我有以下代码,地址清理程序仅在 LTO 关闭时捕获违规。-Os 和 -O0 之间的更改不会影响它。任何想法为什么?
char *__attribute((noinline)) SCObfuscatedMalloc();
void SCCauseAddressSanitizerViolation() {
char *chars = SCObfuscatedMalloc();
if (rand() & 1) {
chars[2] = 3;
} else {
chars[2] = 2;
}
printf("yo: %zd\n", (NSInteger)chars[2]);
}
char *__attribute((noinline)) SCObfuscatedMalloc() {
return malloc(1);
}