网站怎么做qq登录,五种营销工具,关键词检测工具,内蒙古住房和城乡建设部网站原型#xff1a;extern void *realloc(void *mem_address, unsigned int newsize);
参数#xff1a; mem_address#xff1a; 要改变内存大小的指针名newsize #xff1a; 新的内存大小。 如果分配内存减少#xff0c;realloc仅仅改变索引的信息。 如果将… 原型extern void *realloc(void *mem_address, unsigned int newsize);
参数 mem_address 要改变内存大小的指针名newsize 新的内存大小。 如果分配内存减少realloc仅仅改变索引的信息。 如果将分配的内存扩大则有一下几种情况 1 如果当前内存段后面有需要的内存空间则直接扩展这段内存空间realloc()将返回元指针。 2 如果当前内存段后面的空闲字节不够那么就实验堆中的第一个能够满足这一要求的内存块将目前的数据复制到新的位置并把原来的数据块释放掉返回新的内存块位置。 3 如果申请失败将返回NULL此时原来的指针仍有效。 注意如果调用成功不管当前内存段后面的空闲空间是否满足要求都会释放掉原来的指针重新返回一个指针虽然返回的指针有可能和原来的指针一样即不能再次释放掉原来的指针 /***
realloc.c
***/
#includestdio.h
#includestdlib.hint main(int argc,char ** argv)
{int input;int n;int *numbers1;int *numbers2;numbers1 NULL;if( (numbers2 (int*)malloc(5*sizeof(int))) NULL){printf(malloc memory unsuccessful);exit(1);}printf(numbers addr:%8X\n,(int)numbers2);for(n 0; n 5; n){*(numbers2n) n;printf(numbers2s data %d\n,*(numbers2n));}printf(Enter new size: );scanf(%d,input);numbers1 (int *)realloc(numbers2,(input5)*sizeof(int));if(NULL numbers1){printf(Error (re)allocating memory);exit(1);}printf(numbers1 addr: %8X\n,(int)numbers1);for(n 0; n input; n){*(numbers15n) n 5;}printf(\n);free(numbers1);numbers1 NULL;return 0;
} 如果当前内存段有足够的空间realloc()返回原来的指针 ubuntu14-04ubuntu:~/ShareWin/shiyanlou/C/file$ ./realloc
numbers addr: D07010
numbers2s data 0
numbers2s data 1
numbers2s data 2
numbers2s data 3
numbers2s data 4
Enter new size: 10
numbers1 addr: D07010 当前内存段没有足够的空间realloc()返回一个新的内存段的指针 ubuntu14-04ubuntu:~/ShareWin/shiyanlou/C/file$ ./realloc
numbers addr: 25E8010
numbers2s data 0
numbers2s data 1
numbers2s data 2
numbers2s data 3
numbers2s data 4
Enter new size: 10000
numbers1 addr: 25E8010 转载于:https://www.cnblogs.com/wanghao-boke/p/11606187.html