- 论坛徽章:
- 44
|
反复测试,发现printf的诡异问题
本帖最后由 thy_shenzhen 于 2015-10-05 21:37 编辑
代码如下:- domain1 = "blog";
- domain2 = "chinaunix";
- domain3 = "net";
- len1 = strlen(domain1);
- len2 = strlen(domain2);
- len3 = strlen(domain3);
- // printf("the str len1 len2 len3 is %d,%d,%d====\n",len1,len2,len3);
- syslog(LOG_INFO,"the str len1 len2 len3 is %d,%d,%d====\n",len1,len2,len3);
复制代码 这段代码只要用到了printf而且打出3个变量的就会影响到其他程序,导致指针指向的内存数据混乱。
而且只要注释掉printf就没问题了。怀疑printf这个函数存在什么缺陷?
另外我还反复测试过下面几种情况:
1、单独printf其中1个变量也没问题。
2、只打印len1,len2,len3中的任意两个,也没这个问题。
3、用syslog打印随便怎么用都没问题。
这个问题真是够神奇,实在出乎意料啊,仅仅注释掉就好了。
谁能讲讲printf打印3个变量时,到底发生了什么事情?为什么会出现这种坑人的问题? |
|