簡體   English   中英

在C語言中,為什么我們需要將char *強制轉換為void?

[英]In C, why do we need to cast char* to void?

我讀了一個單元測試,它檢查無效的免費或雙重免費:

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();
}

為什么我們需要將char*void以及執行此強制轉換時內存中發生了什么?

(void) a, (void) c;

是擺脫有關未使用變量的編譯器警告的常用方法。 由於這兩個變量僅被初始化,以后不使用,因此大多數編譯器都會發出有關它的警告。 由於這顯然是對內存分配的某種測試,因此它們不是故意使用的,因此有人決定靜音警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM