码迷,mamicode.com
首页 > 其他好文 > 详细

动态分配内存-realloc

时间:2018-09-18 22:43:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:free   动态分配内存   char   分配   void   printf   内存   动态改变   span   

动态分配内存---relloc

关于 malloc 就不多说了,现在看看 realloc:

函数声明: void *realloc(void *ptr, size_t size);

功能:动态改变指针指向的内存块的大小。

使用:如果 ptr 指针是空指针,该函数的作用同 malloc;

           如果 size 的大小小于之前 malloc或 realloc 分配的大小,那么原来内存块的数据会丢失,只保留现有数据;

           如果 size 的大小大于之前 malloc或 realloc 分配的大小,那么将会分配一块新的大小的内存块。

           新的内存块将会复制原来内存块的数据,原来的内存块会被释放。

DemoCode:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int a,*p;
    int i=0,j=0;
    char b;
    p = (int *)malloc(sizeof(int));
    printf("原来指针指向地址:%p\n",p);
    while(1)
    {
        scanf("%d%c",&a,&b);
        p[i] = a;
        if(b != \n)
        {
            i++,j=i;
            p = (int *)realloc(p,sizeof(int)*(i+1));
        }
        else
            break;
    }
    printf("新指针指向地址:%p\n",p);
    for(i=0;i<=j;i++)
        printf("%d\t",p[i]);
    printf("\n");
    free(p);
    return 0;
}

这样就可以根据需要来使用内存了。

动态分配内存-realloc

标签:free   动态分配内存   char   分配   void   printf   内存   动态改变   span   

原文地址:https://www.cnblogs.com/M-Anonymous/p/9671171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!