realloc

作者: 风亡小窝 | 来源:发表于2016-10-27 17:04 被阅读30次

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

相关文章

网友评论

      本文标题:realloc

      本文链接:https://www.haomeiwen.com/subject/odksuttx.html