免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kelvin_fly
打印 上一主题 下一主题

[C] 小程序的段错误,不解,望指教 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-10-19 14:18 |只看该作者
本帖最后由 kelvin_fly 于 2012-10-19 14:23 编辑

回复 10# L_kernel 是的,上面的代码错误颇多,正在修改中。  第二个循环有i<n;的条件,不懂为什么错误。这是修改过的代码,依然有错误。
  1. #include <stdio.h>
  2. #include <string.h>
  3. void *memmovea(char *dest, const char *src, size_t n);

  4. int main()
  5. {
  6.         char *dest , *res, *src = "abcdefg";
  7.         size_t n = 6;
  8.         dest = (char *)malloc(11*sizeof(char));
  9.         res = memmovea(dest,src,n);
  10.         puts(res);
  11.         free(dest);
  12.         return 0;
  13. }

  14. void *memmovea(char *dest, const char *src, size_t n)
  15. {
  16.         int i;
  17.         char *a = dest;
  18.         for(i=0; i<n; *dest++=*src++)
  19.                 ;
  20.         return a;

  21. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2012-10-19 14:24 |只看该作者
kelvin_fly 发表于 2012-10-19 14:18
回复 10# L_kernel  是的,上面的代码错误颇多,正在修改中。  第二个循环有i
重新贴了代码,你看看。

论坛徽章:
0
13 [报告]
发表于 2012-10-19 14:30 |只看该作者
L_kernel 发表于 2012-10-19 14:07
三个个错误,第一个是dest没有malloc,第二个循环那里不能终止,一直写下去,会越界,所以会Segment fault。 ...


谢谢您了。 我修改到了最后一步,没有写i++,太大意了。

论坛徽章:
0
14 [报告]
发表于 2012-10-20 15:11 |只看该作者
回复 2# bruceteen


    请教一下,像dest这种指针是不是一定要给他分配内存的?他和指针res有什么不同啊?为什么res就不用分配内存?
   
   我一般是给单片机写程序的,都是没有操作系统的,对内存不是很了解。。。。

论坛徽章:
0
15 [报告]
发表于 2012-10-21 22:46 |只看该作者
回复 14# 无双侠客


    dest不分配空间,就直接往里面写东西,可能会出错,因为你不知道它指向哪里(可能是系统或其它程序用的空间),而res只是给它赋了值而已。

论坛徽章:
0
16 [报告]
发表于 2012-10-22 09:23 |只看该作者
回复 15# wenjavac


    这样啊,那如果是分配了空间就相当于定义了一个数组,是不是定义数组是不会定义在系统或者其他应用程序空间的。。。

论坛徽章:
0
17 [报告]
发表于 2012-10-22 21:16 |只看该作者
回复 16# 无双侠客


    你可以这么理解操作系统是个管理者,你不经它同意乱用内存等资源。这可能会出错。但你向他申请了。他就会尽可能的帮你处理好。你们单片机就是直接用硬件的资源。无需向谁报告

论坛徽章:
0
18 [报告]
发表于 2012-10-23 11:31 |只看该作者
回复 17# wenjavac


    多谢了。。。

未命名.jpg (4.52 KB, 下载次数: 14)

未命名.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP