1

我有以下代码,地址清理程序仅在 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);
}
4

0 回答 0