我不知道我必须把“free(BlockOfMemory)”放在哪里

问题描述 投票:0回答:1


int main() {
    int *numbers = malloc(5 * sizeof(int)); 
    // Speicherplatz auf 10 ints vergrößern
    int *temp = realloc(numbers, 10 * sizeof(int));
    if (temp != NULL) {
        numbers = temp;
        printf("Speicher erfolgreich vergrößert.\n");
    } else {
        // Fehlerbehandlung
        printf("Speicher konnte nicht vergrößert werden.\n");
        free(numbers);
        return 1;
    }
free (numbers)

    return 0;
}

我想将存储空间从 5 个整数扩展到 10 个整数,只是为了练习。我不知道把“免费(号码)”放在哪里。

c malloc free sizeof realloc
1个回答
0
投票

您现在正在做的事情

free
是正确的。如果
realloc
重新定位数据(由
realloc
返回不等于
numbers
的指针表示),它会自动
free
numbers
,所以无论你调用多少次
realloc
,你应该只拨打
free
一次,就像您现在所做的那样。

© www.soinside.com 2019 - 2024. All rights reserved.