realloc()函数是C语言中的一种用于动态内存分配的函数,它能够重新分配一块指定大小的内存,并返回一个指向新分配的内存空间的指针。它可以改变已经分配的内存的大小,但是不能改变已经分配的内存的地址。
使用方法:
void *realloc(void *ptr, size_t size);
realloc()函数的第一个参数是一个指向原来分配的内存空间的指针,第二个参数是指定新分配的内存空间的大小,如果第二个参数的值小于第一个参数指向的内存空间的大小,则会截取原来分配的内存空间,如果第二个参数的值大于第一个参数指向的内存空间的大小,则会在原来分配的内存空间后面重新分配一块新的内存空间。
realloc()函数的返回值是一个指向新分配的内存空间的指针,如果重新分配内存空间成功,则返回新分配的内存空间的指针,如果重新分配内存空间失败,则返回NULL。
使用实例:
#include#include int main() { int *ptr, i , n1, n2; printf("输入原来分配的内存空间的大小:"); scanf("%d", &n1); printf("输入新分配的内存空间的大小:"); scanf("%d", &n2); ptr = (int*)malloc(n1 * sizeof(int)); printf("原来分配的内存空间的地址:%p\n", ptr); ptr = (int*)realloc(ptr, n2 * sizeof(int)); printf("新分配的内存空间的地址:%p\n", ptr); free(ptr); return 0; }
上面的代码中,使用malloc()函数分配了一块大小为n1的内存空间,使用realloc()函数重新分配了一块大小为n2的内存空间,使用free()函数释放了分配的内存空间。
注意事项:
- realloc()函数不能改变已经分配的内存的地址;
- 如果第二个参数的值小于第一个参数指向的内存空间的大小,则会截取原来分配的内存空间;
- 如果第二个参数的值大于第一个参数指向的内存空间的大小,则会在原来分配的内存空间后面重新分配一块新的内存空间;
- realloc()函数的返回值是一个指向新分配的内存空间的指针,如果重新分配内存空间成功,则返回新分配的内存空间的指针,如果重新分配内存空间失败,则返回NULL。
realloc()函数是一种重新分配内存空间的有效方法,它能够根据需要改变内存空间的大小,但是它也有一些限制,比如不能改变已经分配的内存的地址,所以在使用realloc()函数时,需要根据实际情况进行选择。