免费注册 查看新帖 |

Chinaunix

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

有空的朋友来帮我看一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-05 09:42 |只看该作者 |倒序浏览

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. struct test
  5. {
  6.         char s1[3+1];
  7.         char s2[3+1];
  8. };
  9. int main(void)
  10. {
  11.        
  12.         test ts1,ts2,*ts3;
  13.         char szStr[100];
  14.         memset( &ts1,0x00,sizeof(ts1));
  15.         memset( &ts2,0x00,sizeof(ts2));
  16.         memset( &szStr,0x00,sizeof(szStr));
  17.         strcpy( ts1.s1,"123");
  18.         strcpy( ts1.s2,"456");
  19.         memcpy( szStr,&ts1,sizeof(ts1) );
  20.         ts3 = &ts2;
  21.         ts3 = ( test*)szStr;
  22.         printf("%s\n",ts3->s1);
  23.         printf("%s\n",ts3->s2);
  24.         return 0;
  25. }
复制代码

上段代码存在内存溢出的危险吗?

论坛徽章:
0
2 [报告]
发表于 2007-06-05 09:45 |只看该作者
請自行使用valgrind分析

论坛徽章:
0
3 [报告]
发表于 2007-06-05 09:51 |只看该作者
原帖由 福瑞哈哥 于 2007-6-5 09:45 发表
請自行使用valgrind分析

不还意思,公司没装有这个工具

论坛徽章:
0
4 [报告]
发表于 2007-06-05 09:52 |只看该作者
win底下有没有检测内存的工具

论坛徽章:
0
5 [报告]
发表于 2007-06-05 10:04 |只看该作者
没看出来没有问题

论坛徽章:
0
6 [报告]
发表于 2007-06-05 10:09 |只看该作者

  1. memcpy( szStr,&ts1,sizeof(ts1) );
复制代码

我比较担心的是这一句,会不会因为位对齐而导致部分数据丢失

论坛徽章:
0
7 [报告]
发表于 2007-06-05 10:18 |只看该作者
原帖由 C_C 于 2007-6-5 10:09 发表

  1. memcpy( szStr,&ts1,sizeof(ts1) );
复制代码

我比较担心的是这一句,会不会因为位对齐而导致部分数据丢失



szStr,没有问题. ts1也没有问题,你担心那部分数据丢失?

论坛徽章:
0
8 [报告]
发表于 2007-06-05 11:13 |只看该作者
原帖由 柳五随风 于 2007-6-5 10:18 发表



szStr,没有问题. ts1也没有问题,你担心那部分数据丢失?




楼主说的是
struct xxx
{
    char x[x];
    int    i;
    float f;
};
可能造成的数据补位?

同表关注

论坛徽章:
0
9 [报告]
发表于 2007-06-05 11:37 |只看该作者
不会,也不存在位对齐的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP