在C中,为什么我们需要将char*转换为void?

Ana*_*oly 1 c

我读了一个单元测试,检查无效免费或双免费:

int main() {
    char *a = (char*) my_malloc(200);
    char *b = (char*) my_malloc(50);
    char *c = (char*) my_malloc(200);
    char *p = (char*) my_malloc(3000);

    (void) a, (void) c;

    memcpy(p, b - 200, 450);
    my_free(p + 200);
    printstatistics();
}
Run Code Online (Sandbox Code Playgroud)

为什么我们需要转换char*void,当我们这样做投在内存中会发生什么?

Woj*_*wka 5

(void) a, (void) c;
Run Code Online (Sandbox Code Playgroud)

是摆脱有关未使用变量的编译器警告的常用方法.由于这两个变量只是初始化而后不再使用,因此大多数编译器会发出有关它的警告.由于这显然是某种内存分配测试,因此不会故意使用,因此有人决定将警告静音.