免费注册 查看新帖 |

Chinaunix

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

[C] 和printf有关的一个小程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-09 12:02 |只看该作者 |倒序浏览
打开printf,和不打开printf 执行效果不一样,和大家讨论原因,感觉和变参有关系
  1. #include <stdio.h>

  2. int main(int argc,char *argv[])
  3. {
  4.         printf("hello\n");
  5.     _dl_allocate_tls(NULL);
  6.         return 0;
  7. }
复制代码

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2011-08-09 13:03 |只看该作者
不知道LZ想说什么

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3 [报告]
发表于 2011-08-09 13:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2011-08-09 13:59 |只看该作者
本帖最后由 jackin0627 于 2011-08-09 14:00 编辑

论坛徽章:
0
5 [报告]
发表于 2011-08-09 14:04 |只看该作者
就是说两段代码,一段加printf,一段不加printf,为何反差如此大,使用gcc编译一下,就看到效果了,我想说的是,什么原因可能导致这类情况发生?
代码1:
  1.     #include <stdio.h>

  2.     int main(int argc,char *argv[])
  3.     {
  4.             printf("hello\n");
  5.             _dl_allocate_tls(NULL);
  6.             return 0;
  7.     }
复制代码
代码2:
  1.     #include <stdio.h>

  2.     int main(int argc,char *argv[])
  3.     {
  4.            // printf("hello\n");
  5.             _dl_allocate_tls(NULL);
  6.             return 0;
  7.     }
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
6 [报告]
发表于 2011-08-09 14:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
7 [报告]
发表于 2011-08-09 14:40 |只看该作者
我觉得你还是告诉大家怎么个“执行效果不一样”,不要卖关子,这会令人反感

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
8 [报告]
发表于 2011-08-09 15:07 |只看该作者
就是说两段代码,一段加printf,一段不加printf,为何反差如此大,使用gcc编译一下,就看到效果了,我想说的是 ...
rtcontrol 发表于 2011-08-09 14:04



    我的环境执行结果都一样,都Segmentation fault了

论坛徽章:
0
9 [报告]
发表于 2011-08-09 18:11 |只看该作者
我的环境执行结果都一样,都Segmentation fault了
hellioncu 发表于 2011-08-09 15:07



我的环境 ubuntu10.10,加上printf有段错误,不加没有段错误。

gcc信息如下:
root@ubuntu:~/test# gcc -v
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)

root@ubuntu:~/test# gcc stack_test.c -o stack_test

加上printf,如下:
root@ubuntu:~/test# ./stack_test
hello
Segmentation fault

不加上printf,没有问题

root@ubuntu:~/test# ./stack_test
root@ubuntu:~/test#

论坛徽章:
0
10 [报告]
发表于 2011-08-09 18:14 |只看该作者
回复 6# pmerofc

原型
  1. void *
  2. internal_function
  3. _dl_allocate_tls (void *mem)
  4. {
  5.   return _dl_allocate_tls_init (mem == NULL
  6.                                 ? _dl_allocate_tls_storage ()
  7.                                 : allocate_dtv (mem));
  8. }
复制代码
具体代码在glibc-2.12.1/elf/dl-tls.c中
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP