Div*_*vya 1 c malloc realloc calloc dynamic-memory-allocation
当我们尝试调整malloc使用分配的内存大小时realloc,我们通常会这样做:
char *ptr = (char *)malloc(size_1);
ptr = (char *)realloc(ptr, size_2);
Run Code Online (Sandbox Code Playgroud)
如果size_2可能大于或小于size_1.如果新大小较大,则旧数据不会丢失,新分配的字节未初始化.ptr如果旧地址处没有足够的内存来连续存储所有字节,则包含的起始地址可能会改变.realloc将旧块的内容移动到新块中,并ptr指向该新块的初始字节.
但是,如果使用分配内存calloc,我无法理解realloc函数的行为方式.有人可以给我一个关于如何realloc分配内存的工作的简要概述calloc吗?
我们知道malloc和calloc的内存块布局是不同的.
不,我们没有.实际上,我们知道除了calloc()负责将其参数相乘(确定块大小)并确保分配的块用全零位模式初始化之外,根本没有区别.
其余的如下.realloc()无论使用什么功能来分配内存块,内存块的处理方式都没有区别.realloc()处理calloced块的方式与处理malloc()ed块的方式完全相同.