虽然没有使用指针,但是分段错误和可用内存

时间:2017-07-06 11:49:26

标签: c++ segmentation-fault

我正在尝试打印最接近的素数ASCII的问题,但没有输出。有什么问题以及如何解决?

代码:

1

输入:

Your Code's Output

375 AvfmaLgLRpQadLyThsxVzkUqbFOdxfbLGdpBWOwmAnflENlYFbdhNHerHVtZkaPLgMtNQovVHpwGfHJdXXWAhYrhwXKPxtnpxCIsaXVAkcxTpVprFNeOVcnSEsgIvfqXPRSUASSDCvAGrFJCDbzGLFhrMYWALElChmurLrEeQttIWctyhQXzZUVAYuCIZecBJbXMxlMHFbZxJRTSZJmZAwCggGabVsovqBrdmmbCTaIHDfUunLFntfGzodKqoAKwCassKMDybethRaQgegsOawfNCNrIAkECEKpbwElhvWtlZBEZqJQpEkzpiSjrqZZIHbszUxwuWreXkxFKxSAiKoemIqETGVxcCjweKhbyXxhVKCbNTQBKgHD

{{1}}
  

"您的代码没有打印任何内容。"

2 个答案:

答案 0 :(得分:4)

cin>>S[j];正在访问S越界,因为S为空。您可能希望将其替换为例如:

char ch;
cin >> ch;
S += ch;

或者只是一次读取整个字符串而不先输入长度:

cin >> S;

此外,我收到编译错误"控件可能会达到非空函数的结束"为performAll。即它缺少一份退货声明。

答案 1 :(得分:3)

你正在践踏内存std::string分配。当你到达

cin>>S[j];

S为空,因为它是默认构造的。如果索引对于写入无效并且空字符串没有有效的可写索引,则尝试使用operator[]向其添加数据是未定义的行为。