小编Shu*_* Xu的帖子

realloc会对旧指针做什么

我有一个关于realloc函数的问题.应用realloc函数后,是否会更改旧指针的内容?代码是

main () {
    int *a, *b, i;

    a = calloc(5, sizeof(int));
    for (i = 0; i < 5; i++)
            a[i] = 1;
    for (i = 0; i < 5; i++)
            printf("%d", a[i]);
    printf("\n%p\n", a);

    b = realloc(a, 200000 * sizeof(int));
    if(b == NULL)
            printf("error\n");
    for (i = 0; i < 5; i++)
            printf("%d", a[i]);
    printf("\n");
    for (i = 0; i < 10; i++)
            printf("%d", b[i]);

    printf("\n%p %p\n", a, b);
}
Run Code Online (Sandbox Code Playgroud)

输出是

11111
0x2558010
00111
1111100000
0x2558010 0x7f29627e6010
Run Code Online (Sandbox Code Playgroud)

指针仍指向同一地址,但内容已更改.

c pointers realloc

1
推荐指数
2
解决办法
3032
查看次数

标签 统计

c ×1

pointers ×1

realloc ×1