这个函数是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改过去又改回来?
wz!!!!!!!!@128- 内存溢出了 tpu01yzx 发表于 2012-10-25 13:35 static/image/common/back.gif
内存溢出了
没有。。。 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;
}
tpu01yzx 发表于 2012-10-25 21:39 static/image/common/back.gif
VC6.0 在debug模式下试试
#include
机子上没有VC。。。 但是用其他编译器跑都没有问题
可能你的赋值 char shotname = “:”,strchr返回字符数组的首地址, 之后再做取pcolon-1上一地址内存分配的值,他是未知的,泄露了吧
但是不论上一地址分配的什么,都不影响shortname,后来他完全复原了。 cao884203 发表于 2012-10-26 09:39 static/image/common/back.gif
机子上没有VC。。。 但是用其他编译器跑都没有问题
可能你的赋值 char shotname = “:”,strchr返回字 ...
你是看出来了,不过这要是在多线程环境下的实时系统就很容易崩溃!anyway,你这代码在哪里看到的? 看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除 好吧,我想说我看不懂,,保存起来.研究下. zuobiao 发表于 2012-11-2 03:53 static/image/common/back.gif
看起来像是说如果shotname里面有" \:"这样的字符组合,则将第一次出现" \:"之后的所有内容删除 ...
并没删除。的确有点意味不明,处理后字符串看上去完全米有变化。
本来还以为是切断或者分割之类的操作,现在猜测可能两个步骤之间有一些其他的步骤,
比如拷贝\:之前的内容什么的。只是没贴出来。
页:
[1]