cao884203 发表于 2012-10-24 15:55:02

这个函数是Unix大神 显摆用的么?

char            *pbkslh = NULL;
char            *pcolon = NULL;

   
    if ((pcolon = strchr(shortname, ':')) != NULL)   
    {
    *pcolon = '\0';

    if (*(pcolon - 1) == '\\')
      {
      pbkslh = pcolon - 1;

      *pbkslh = '\0';
      }
    }

      if (pcolon != NULL)
    {
    *pcolon = ':'; /* replace the colon */

    if (pbkslh)
      *pbkslh = '\\';
    }


你究竟想干什么??? 求解释shortname改过去又改回来?

cao884203 发表于 2012-10-25 12:00:46

wz!!!!!!!!@128-

tpu01yzx 发表于 2012-10-25 13:35:06

内存溢出了

cao884203 发表于 2012-10-25 15:07:25

tpu01yzx 发表于 2012-10-25 13:35 static/image/common/back.gif
内存溢出了

没有。。。

tpu01yzx 发表于 2012-10-25 21:39:00

cao884203 发表于 2012-10-25 15:07 static/image/common/back.gif
没有。。。

VC6.0 在debug模式下试试

#include <iostream>
using namespace std;
int main() {
       
        char shortname = ":";
        unsigned int overflow = 0x5CFFFFFF;

        char            *pbkslh = NULL;
        char            *pcolon = NULL;
               
        printf("%08X\n", overflow);

        if ((pcolon = strchr(shortname, ':')) != NULL)   
        {
        *pcolon = '\0';

        if (*(pcolon - 1) == '\\')
          {
          pbkslh = pcolon - 1;

          *pbkslh = '\0';
          }
        }

        printf("%08X\n", overflow);

          if (pcolon != NULL)
        {
        *pcolon = ':'; /* replace the colon */

        if (pbkslh)
          *pbkslh = '\\';
        }
       
    return 0;
}

cao884203 发表于 2012-10-26 09:39:22

tpu01yzx 发表于 2012-10-25 21:39 static/image/common/back.gif
VC6.0 在debug模式下试试

#include


机子上没有VC。。。 但是用其他编译器跑都没有问题
可能你的赋值 char shotname = “:”,strchr返回字符数组的首地址, 之后再做取pcolon-1上一地址内存分配的值,他是未知的,泄露了吧
但是不论上一地址分配的什么,都不影响shortname,后来他完全复原了。

tpu01yzx 发表于 2012-10-30 20:21:55

cao884203 发表于 2012-10-26 09:39 static/image/common/back.gif
机子上没有VC。。。 但是用其他编译器跑都没有问题
可能你的赋值 char shotname = “:”,strchr返回字 ...

你是看出来了,不过这要是在多线程环境下的实时系统就很容易崩溃!anyway,你这代码在哪里看到的?

zuobiao 发表于 2012-11-2 03:53:16

看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除

jains521 发表于 2012-12-27 20:13:04

好吧,我想说我看不懂,,保存起来.研究下.

jinlei6394 发表于 2012-12-28 00:56:51

zuobiao 发表于 2012-11-2 03:53 static/image/common/back.gif
看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除 ...

并没删除。的确有点意味不明,处理后字符串看上去完全米有变化。
本来还以为是切断或者分割之类的操作,现在猜测可能两个步骤之间有一些其他的步骤,
比如拷贝\:之前的内容什么的。只是没贴出来。
页: [1]
查看完整版本: 这个函数是Unix大神 显摆用的么?