标签: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; }
这样就可以根据需要来使用内存了。
标签:free 动态分配内存 char 分配 void printf 内存 动态改变 span
原文地址:https://www.cnblogs.com/M-Anonymous/p/9671171.html