1. 程式人生 > >動態分配內存-realloc

動態分配內存-realloc

scan include eal sizeof char tro 保留 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