malloc()需要初始化吗?一般怎么来初始化?

tzk 2006-09-24 10:26:18
通过malloc()分配了一段空间,需要对所分配的空间初始化吗?
如果需要,使用循环来给这段空间赋值吗?
...全文
4940 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailongchang 2006-09-26
  • 打赏
  • 举报
回复
给你一个memset的sample:

#include <memory.h>
#include <stdio.h>

int main( void )
{
char buffer[] = "This is a test of the memset function";

printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
}
Output:
Before: This is a test of the memset function
After: **** is a test of the memset function

jixingzhong 2006-09-25
  • 打赏
  • 举报
回复
初始化 是一个好习惯,
对于连续的内存区域,
使用 memset 是比较常用的方式 ...

void *memset(void *s,char ch,unsigned n)
memset将s的所有字节置于字节ch中.s数组的长度由n给出.
如 memset(buf, 0, 100);
OOPhaisky 2006-09-25
  • 打赏
  • 举报
回复
通过malloc()分配了一段空间,需要对所分配的空间初始化吗?
-----------------------------------------------------------------
根据你程序的需要而定。一般情况下是需要进行初始化的,但是如果不初始化对你的程序没有任何影响,你也可以不初始化。


如果需要,使用循环来给这段空间赋值吗?
------------------------------------------------------------------
仍然根据你的程序而定。如果你需要将整个分配得来的空间初始化为0,可以用memset,如果你有特定的初始化值的要求,则可以利用循环来初始化。
hall919 2006-09-25
  • 打赏
  • 举报
回复
不初始化虽然一般不会出现问题,但很有可能出现问题。
但如果一个函数你多次调用的话,函数体里有malloc,虽然函数结束你把它free掉了,但你下次调用或许系统给你分配的内存还在上次分配的地方,就会出问题。
我遇到过的。最好使用calloc。
lj860603 2006-09-24
  • 打赏
  • 举报
回复
没初始化也许不会出现问题,但最好初始化。一般用memset实现。
飞哥 2006-09-24
  • 打赏
  • 举报
回复
可以在malloc的时候利用构造函数初始化
memset也行
kangji 2006-09-24
  • 打赏
  • 举报
回复
初始化可以用memset()
也可以用calloc函数来分配空间,它会自动给你初始化

69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧