首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MLE / SEGF错误

MLE / SEGF错误
EN

Stack Overflow用户
提问于 2011-02-16 01:25:57
回答 1查看 527关注 0票数 0

我从实践中学习,并喜欢使用在线评委网站来学习。现在我正在开发http://www.z-training.net/tasks.php?show_task=5000000406。一些测试用例通过了测试,但许多测试用例通过了MLE/SEGF。我的代码采用了一种暴力方法。这种方法是MLE/SEGF错误的原因吗?

代码语言:javascript
复制
//z-last char
#include <iostream>
#include <string>
using namespace std;

int main()
{
string str = "";
string tmp = "";
  string newStr = "";
  unsigned int strSize = 0;
  unsigned int repeat;
  unsigned int i;
  int cnt = 0;

  cin >> str;
  cin >> repeat;

  tmp = str;
  strSize = str.size();

  for (i=1;i<repeat;i++)
  {
    str += tmp;
    strSize += strSize;
  }

  while (strSize > 1)
  {
    cnt = 0;
    newStr = "";
    for (i=1;i<strSize;i=i+2)
    {
      newStr += str[i];
      cnt += 1;
    }
    //cout << newStr << endl;
    strSize = cnt;
    str = newStr;

  }

  cout << newStr << endl;
  return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-16 01:48:44

我在这里看到了一些问题。在C和C++中,数组的编号从0开始,到分配的长度- 1结束。

str[0]是指str中的第一个字符。

str[str.length() - 1]是指str中的最后一个字符。

此外,C字符串以二进制0结尾。一些C++字符串库将其字符串保存为C库格式,以便可以在其上使用C字符串函数。如果您干扰了字符串末尾的0,并且字符串库正在尝试使用也可能导致seg错误的C字符串库函数。

你可能会得到seg错误,因为你正在读或写超出界限的内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档