realloc

realloc()能够对一个现在的内存块大小进行重新分配,同时不会丢失原先内存块的内容。

#include <stdio.h>
#include <stdlib.h>

void add_element(char c);

int current_element = 0;
int total_elemet = 2;
char *dynamic;

int main()
{
    dynamic = malloc(total_elemet);
    add_element('a');
    add_element('a');
    add_element('a');
    add_element('a');
    add_element('a');

    printf("%d\n", total_elemet);
}

void add_element(char c)
{
    if (current_element == total_elemet - 1)
    {
        total_elemet *= 2;
        dynamic = realloc(dynamic, total_elemet);
        if (dynamic == NULL) perror("Coundn't expand the table");
    }
    current_element++;
    dynamic[current_element] = c;
}

在实践中,不要把realloc()函数的返回值直接赋给字符指针。如果realloc()函数失败,它会使该指针的值变为NULL,这样就无法对现有的表进行访问。——《C专家编程》P236

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容