p周围的栈被c++破坏了
Stack around p was corrupted c++
这一定很简单,但我现在太麻木了,无法清晰地思考。这是我代码的一小部分除了这个,其他都很好。我实际想做的是infile1.open(temp2->path);但这是不可能的,因为temp2是一个字符串。所以我想把这个字符串放入char数组中,如char p[100],以使用infile1.open(p)。它编译了,但几秒钟后突然出现:p周围的堆栈损坏
char p[100];
while( temp2 != 0)
{
stringToCharArray(temp2->path, p);
infile1.open(p);
checkingWords(infile1, stopWords, invertedIndex);
infile1.close();
temp2 = temp2->next;
}
void stringToCharArray(string s, char *c)
{
int i;
int size = s.size();
for( i=0; i<=size ; i++)
{
c[i] = s[i];
}
}
我相信你想要std::string::c_str
。
infile1.open(temp2->path.c_str());
(要小心,这个const char *
只有在下次你改变std::string
中的某些东西时才有效,在这种情况下是temp2->path
)。
看起来你现有代码的主要错误是for( i=0; i<=size ; i++)
应该是i<size
。不过我们还是不要太详细了,因为你不应该这么做
你可以用最简单的方法
infile1.open(temp2->path.c_str());
但是你的hard way应该是这样的
void stringToCharArray(string s, char *c)
{
int i;
int size = s.size();
for( i=0; i<size ; i++) // < not <=
{
c[i] = s[i];
}
c[size] = ' ';
}
当然,如果您的字符串恰好是100个字符或更多,那么困难的方法将会失败。
你可以这样做:
infile1.open(temp2->path.c_str());
堆栈损坏发生在stringToCharArray
函数内部。
for( i=0; i<=size ; i++)
//^^^should not reach size-1, equal redundant
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 我在c++代码中生成了一个运行时#3异常
- Ardunio UNO解决了多个重叠的定时器循环
- 为什么我的代码在输出中增加了93天
- C++为什么尽管我调用了void函数,它却不起作用
- 不断收到相同的错误...怎么了?C++
- wxWidgets mac剪贴板在3.1.3上坏了?
- 计时器坏了或者其他什么的
- boost::p rocess::env 在 ubuntu 19.04 上坏了?
- std::regex 是否保证了最坏情况下的时间复杂度?
- 课堂上的一行,使整个应用程序坏了. 0xC000005错误
- SFML sf::Text::setFillColor 坏了,还是我做错了什么
- 开关内的案例不停地循环,即使我坏了
- 溪水变坏了
- 我最基本的c++程序坏了,我不知道为什么
- 我的电脑怎么坏了?
- 条件评估是否优化?这个代码坏了吗
- 地图:坏Ptr,即使找到了钥匙