镇海企业建站,进网站后台显示空白,网站建设与管理是什么意思,建设网络平台原型#xff1a;externvoid *realloc(void *mem_address, unsigned int newsize);用法#xff1a;#include 功能#xff1a;改变mem_address所指内存区域的大小为newsize长度。说明#xff1a;如果重新分配成功则返回指向被分配内存的指针#xff0c;否则返回空指针NULL。…原型externvoid *realloc(void *mem_address, unsigned int newsize);用法#include 功能改变mem_address所指内存区域的大小为newsize长度。说明如果重新分配成功则返回指向被分配内存的指针否则返回空指针NULL。当内存不再使用时应使用free()函数将内存块释放。下面再看MSDN中对realloc()函数的描述realloc returns a void pointer to the reallocated (and possiblymoved) memory block. The return value is NULL if the size is zeroand the buffer argument is not NULL, or if there is not enoughavailable memory to expand the block to the given size. In thefirst case, the original block is freed. In the second, theoriginal block is unchanged. The return value points to a storagespace that is guaranteed to be suitably aligned for storage of anytype of object. To get a pointer to a type other than void, use atype cast on the return value.这段E文基本上是在讲realloc()的返回值的。realloc()函数的返回值是void *型的。有下面三种情况1、返回void * 指针调用成功。Void*型的指针指向新分配的内存空间。在需要的情况下可以再对这个指针进行强制类型转换转换成你需要的类型的指针。如果传入的第一个指针参数为NULL则该函数等同与malloc函数。2、返回NULL当需要扩展的大小(第二个参数)为0并且第一个参数不为NULL此时原内存被“freed”掉了。我们知道realloc是从堆上分配内存的当扩大一块内存空间时realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节如果能够满足自然天下太平可如果数据后面的字节不够的话那么就使用堆上第一个有足够大小的自由块现存的数据然后就被拷贝至新的位置而老块则放回到堆上。返回值指向新分配的内存地址。由于在这其中可能会发生数据的移动因此我们应该尽力避免下面的用法。…………………………#include char *p*q;p (char * ) malloc (10);qp;p (char * ) realloc (p,20);…………………………在这种情况下如果发生了数据的移动p指向了新分配的内存地址但是指针q还依然指向原先的内存地址而原先的那部分内存已经在realloc函数中free掉了因此指针q成了“野指针”指向了一块未知的内存区域这是很危险的。类似的我们也应该尽量避免下面这种情况的使用。…………………………q (char * ) realloc (p,20);………………………与第一种情况类似如果发生了数据的移动q指向了新分配的内存地址而指针p还依然指向原先的内存地址此时p成了野指针。如果不得以非得这样使用的话(估计这种情况是不存在的)我们也应该紧跟此后将指针p置为NULL。…………………………q (char * ) realloc (p,20);p NULL