本文目录
- 请问c语言中malloc函数和realloc的区别
- realloc()函数是干什么用的
- C语言中用动态数组储存一个长度未知的字符串,应该怎么使用malloc和realloc函数
- C++为什么不建议使用malloc,calloc,realloc来分配内存
请问c语言中malloc函数和realloc的区别
c语言中malloc函数和realloc函数的区别为:分配不同、释放不同、强制转化不同。
一、分配不同
1、malloc函数:malloc函数对没有分配过的内存块直接进行分配。
2、realloc函数:realloc函数是在已经分配好的内存块重新进行分配。
二、释放不同
1、malloc函数:malloc函数分配好的内存块一般要用free(size_t size)来释放内存块。
2、realloc函数:realloc函数分配好的内存块不需要用free(size_t size)来释放内存块。
三、强制转化不同
1、malloc函数:malloc函数需要强制转化。
2、realloc函数:realloc函数不需要强制转化。
realloc()函数是干什么用的
它和malloc函数相关的。例如:你用malloc函数分配100个字节空间char *p =(char*)malloc(100);然后,你觉得这块空间不够你用,你申请的少了,那么你就可以使用 realloc来改变这个空间大小。p= (char*)realloc(p,200);希望对你有帮助。
C语言中用动态数组储存一个长度未知的字符串,应该怎么使用malloc和realloc函数
char* buffer;buffer = (char *)malloc(initialize size);buffer = (char *)realloc(buffer, initialize size+add size);一般做法是设定一个初始值,再设定一个追加值。比如:*p初始分配10个字符空间。当空间不够用的时候,每次增加20个字符空间。这样会增加效率。象你这样:初始p = (char *)malloc(10);当判断空间不够用的时候,重分配:p = (char*)realloc(p, 10+100*n++); //n做重分配次数计数器,初值=1如果再不够用,就再次调用:p = (char*)realloc(p, 10+100*n++); //这时n=2了,n++后=3
C++为什么不建议使用malloc,calloc,realloc来分配内存
第一个 C++里面有new 和delete可以实现类似功能。 malloc系列是函数,而new是操作符 用new更高效第二个 对于对象的内存分配 使用new可以调用构造函数而用malloc则不会, 所以有可能出现不可预知问题, 尤其是派生类对象,如果有虚函数表,那么用malloc出来的类对象,使用就是一场灾难