realloc()函数在c语言中的作用和用法

分类:知识百科 日期: 点击:0

realloc()函数是C语言中的一种用于动态内存分配的函数,它能够重新分配一块指定大小的内存,并返回一个指向新分配的内存空间的指针。它可以改变已经分配的内存的大小,但是不能改变已经分配的内存的地址。

使用方法:

void *realloc(void *ptr, size_t size);

realloc()函数的第一个参数是一个指向原来分配的内存空间的指针,第二个参数是指定新分配的内存空间的大小,如果第二个参数的值小于第一个参数指向的内存空间的大小,则会截取原来分配的内存空间,如果第二个参数的值大于第一个参数指向的内存空间的大小,则会在原来分配的内存空间后面重新分配一块新的内存空间。

realloc()函数的返回值是一个指向新分配的内存空间的指针,如果重新分配内存空间成功,则返回新分配的内存空间的指针,如果重新分配内存空间失败,则返回NULL。

使用实例:

#include 
#include 
 
int main()
{
    int *ptr, i , n1, n2;
    printf("输入原来分配的内存空间的大小:");
    scanf("%d", &n1);
    printf("输入新分配的内存空间的大小:");
    scanf("%d", &n2);
 
    ptr = (int*)malloc(n1 * sizeof(int));
    printf("原来分配的内存空间的地址:%p\n", ptr);
 
    ptr = (int*)realloc(ptr, n2 * sizeof(int));
    printf("新分配的内存空间的地址:%p\n", ptr);
 
    free(ptr);
 
    return 0;
}

上面的代码中,使用malloc()函数分配了一块大小为n1的内存空间,使用realloc()函数重新分配了一块大小为n2的内存空间,使用free()函数释放了分配的内存空间。

注意事项:

  • realloc()函数不能改变已经分配的内存的地址;
  • 如果第二个参数的值小于第一个参数指向的内存空间的大小,则会截取原来分配的内存空间;
  • 如果第二个参数的值大于第一个参数指向的内存空间的大小,则会在原来分配的内存空间后面重新分配一块新的内存空间;
  • realloc()函数的返回值是一个指向新分配的内存空间的指针,如果重新分配内存空间成功,则返回新分配的内存空间的指针,如果重新分配内存空间失败,则返回NULL。

realloc()函数是一种重新分配内存空间的有效方法,它能够根据需要改变内存空间的大小,但是它也有一些限制,比如不能改变已经分配的内存的地址,所以在使用realloc()函数时,需要根据实际情况进行选择。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。