免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4023 | 回复: 16
打印 上一主题 下一主题

关于malloc()分配内存的长度 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-21 10:08 |只看该作者 |正序浏览
可以用size_t _msize(void *)试试。
  上次有人问这个问题,找不到那个帖子了,所以另发一个。那次有人说用strlen(),我觉得不太好,但一时没想起什么函数;今天才发现有这个函数,^_^。

论坛徽章:
0
17 [报告]
发表于 2004-07-22 10:16 |只看该作者

关于malloc()分配内存的长度

定义在strings.h里(hp主机)
void bzero(void *s, size_t n);
bzero()             Clear n bytes in the area pointed to by s by setting  them to zero.
   不过,好像很少用。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2004-07-22 09:56 |只看该作者

关于malloc()分配内存的长度

bzero好像不是C标准库的函数。应该是UNIX的系统调用吧。记不清楚了。

论坛徽章:
0
15 [报告]
发表于 2004-07-22 09:51 |只看该作者

关于malloc()分配内存的长度

bzero一样可以清0吧!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2004-07-21 15:55 |只看该作者

关于malloc()分配内存的长度

当然是用free,用memset只是清零了而已。并没有把内存还回去啊。

呵呵。ldap,好久不见了。司兄。^_^。

论坛徽章:
0
13 [报告]
发表于 2004-07-21 15:32 |只看该作者

关于malloc()分配内存的长度

謝謝, 但free是應該如何free呢,
用memset清0還是用回free(abc)呢? 請再賜教.

论坛徽章:
0
12 [报告]
发表于 2004-07-21 15:24 |只看该作者

关于malloc()分配内存的长度

要不要清零看需要吧,不过好像都用memset清零。

一定要free.

haha!

那段malloc可真是简洁啊。

论坛徽章:
0
11 [报告]
发表于 2004-07-21 15:21 |只看该作者

关于malloc()分配内存的长度

初始化需要看你的应用了,不过建议在最后的release版本的时候加上。这样可以让系统更稳定。比如有的时候回忘记了字符串后面的\0,这样会避免发生错误几率,当然在调试时候不要加,这样可以更容易发现隐藏起来的错误。

另外,初始化用memset

论坛徽章:
0
10 [报告]
发表于 2004-07-21 15:14 |只看该作者

关于malloc()分配内存的长度

我想再請教各位一個malloc的問題,
當malloc左一個位置後, 是否需要用memcpy來初始化呢, 當用完後是否需要free出來給系統呢? 請各位賜教. thanks.
例如:
char *abc;
abc = (char *)malloc(100);
memcpy(abc, 0, 100);

论坛徽章:
0
9 [报告]
发表于 2004-07-21 14:58 |只看该作者

关于malloc()分配内存的长度

我觉得malloc()函数好像只是分配了一块内存而已,linux2.0.3.9中的函数在下面,它没有做验证,其他系统的不太清楚,哪位老大能说明一下?

  1. static void *malloc(int size)
  2. {
  3.         void *p;

  4.         if (size <0) error("Malloc error\n");
  5.         if (free_mem_ptr <= 0) error("Memory error\n");

  6.         free_mem_ptr = (free_mem_ptr + 3) & ~3;        /* Align */

  7.         p = (void *)free_mem_ptr;
  8.         free_mem_ptr += size;

  9.         if (free_mem_ptr >;= free_mem_end_ptr)
  10.                 error("\nOut of memory\n");

  11.         return p;
  12. }
复制代码
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP