首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++一个运行时的错误,就是调不对,前辈们帮忙看看吧

2013-12-11 
C++一个运行时的异常,就是调不对,前辈们帮忙看看吧错误提示如下:.....中的 0x102ca6d0 (msvcr100d.dll) 处

C++一个运行时的异常,就是调不对,前辈们帮忙看看吧
错误提示如下:
.....中的 0x102ca6d0 (msvcr100d.dll) 处最可能的异常: 0xC0000005: 写入位置 0x004eae81 时发生访问冲突。
代码如下:


private:
static void split(TCHAR *src, const TCHAR *separator, vector<float>& dest)
{
TCHAR* token;
  token =  _tcstok(src, separator);//这行的断点过不去,程序弹出警告框(黄色叹号),内容如上。
while(token != NULL)
{
dest.push_back(chars2Num(token));
token = strtok(NULL, separator);
}
}

调用处是同一个class里的另外一个方法:

public:
static void fillPen(Pen* pen, LineType lineType)
{
std::vector<float> dashArray;
TCHAR* typeValue;
switch(lineType)
{
case .....:
typeValue = "9,3,3,6";
break;
}
split(typeValue, ",", dashArray);
}

报错后vs2010会跳到一个“mbstok_s.inl”的文件,在第116行有黄色箭头提示,代码如下:

 if (*ctl != 0)
        {
            *_String++ = 0;
            if (dbc)
            {
                *_String++ = 0;
            }
            break;
        }

另外,只能用TCHAR或BSTR,我都不会……一开始用string写完被告知不可以......
(刚开始学,这些东西搞得乱七八糟,各种宏各种不同的库……哎~吐槽完毕)
[解决办法]
typeValue = "9,3,3,6"; 这个指针指着const 内存, _tcstok(src, separator);这个函数会修改const内存...


你改一下
char typeValue[128] = {0};
strcpy(typeValue,"9,3,3,6");
[解决办法]
引用:
typeValue = "9,3,3,6"; 这个指针指着const 内存, _tcstok(src, separator);这个函数会修改const内存...


你改一下
char typeValue[128] = {0};
strcpy(typeValue,"9,3,3,6");


++

热点排行