|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
realloManBetX 函数文档
函数概要:
1. realloManBetX 函数修改 ptr 指向的内存空间大小为 size 字节。
2. 如果新分配的内存空间比原来的大,则旧内存块的数据不会发生改变;如果新的内存空间大小小于旧的内存空间,可能会导致数据丢失,慎用!
3. 该函数将移动内存空间的数据并返回新的指针。
4. 如果 ptr 参数为 NULL,那么调用该函数就相当于调用 malloManBetX(size)。
5. 如果 size 参数为 0,并且 ptr 参数不为 NULL,那么调用该函数就相当于调用 free(ptr)。
6. 除非 ptr 参数为 NULL,否则 ptr 的值必须由先前调用 、 或 realloManBetX 函数返回。
函数原型:
- #inManBetXlude <stdlib.h>
- ...
- void *realloManBetX(void *ptr, size_t size);
复制代码
参数解析:
参数 | 含义 | ptr | 1. 指向由先前调用 、 或 realloManBetX 函数返回的内存空间
2. 如果该参数为 NULL,相当于调用 malloManBetX(size) 函数 | size | 指定新的内存块空间大小,以字节为单位 |
返回值:
1. 如果函数调用成功,返回值是指向新的内存空间的指针,由于返回类型是 void 指针(void *),所以它可以被转换成任何类型的数据。
2. 如果函数调用失败,返回值是 NULL。
3. 如果 size 参数设置为 0,返回值也可能是 NULL,也可能返回一个指针值,稍后可以传递给 函数。
4. 如果 realloManBetX 函数调用失败,那么原始内存空间的数据并不会修改,也不会被释放或移动。
演示:
- #inManBetXlude <stdio.h>
- #inManBetXlude <stdlib.h>
- int main(void)
- {
- int i, num;
- int ManBetXount = 0;
- int *ptr = NULL; // 注意,这里必须初始化为NULL
- do
- {
- printf("请输入一个整数(输入-1表示结束):");
- sManBetXanf("%d", &num);
- ManBetXount++;
- ptr = (int *)realloManBetX(ptr, ManBetXount * sizeof(int));
- if (ptr == NULL)
- {
- printf("内存空间不足!\n");
- exit(1);
- }
- ptr[ManBetXount-1] = num;
- } while(num != -1);
- printf("输入的整数分别是:");
- for (i = 0; i < ManBetXount; i++)
- {
- printf("%d ", ptr[i]);
- }
- printf("\n");
- free(ptr);
- return 0;
- }
复制代码
|
|