当前位置: 首页 > 知识库问答 >
问题:

循环浮点,核心转储C++

长孙哲
2023-03-14

我不明白我做错了什么。我的代码应该只是从0增加I:0.1,并在每个位置增加0.5,这真的很简单,但是我得到的却是segmentation fault(core dumped)

有人能帮我一下吗?

vector<float> sinal;

int main(){
  sinal[0] = 0;
  for (float i = 0.1; i <= 1; i += 0.1){
    sinal[i] = sinal[i - 1] + 0.5;
    if (i == 1){
      break;
    }
    cout << "\n" << sinal[i];
  }

getchar();
cin.get();
}
 

共有1个答案

滕星纬
2023-03-14

这里有两个问题:

1.访问sinal[0]sinal[i]时,sinal还没有任何容量。

2.使用浮点数作为下标是不寻常的,可能会导致错误发生。下标通常是要访问的项的偏移量,因此如果我要访问第五个元素,我使用4的下标,因为我将4空格前移到第五个元素。如果我使用1.5作为下标,那么我正在尝试向前移动11/2空格,而我们的std::vector不理解这一点。我猜vector的operator[]重载只需要一个int,所以当您放一个float时会发生某种类型的强制转换。

对于一个解决方案,看看我这里的另一个答案:在字符串的情况下不获取输出。

“core dumped”通常尝试取消引用null指针,或者,在本例中,尝试访问超出范围的对象。

 类似资料:
  • 问题内容: 每当进程崩溃时,我都想创建一个核心转储。目前,我正在采用这种方法: 使用gcc / g ++的“ -g”构建程序的特殊“调试”版本。 执行“ ulimit -c unlimited” 现在,只要程序崩溃,我们就获得核心转储。 但我想减少步骤数,以便: 应始终创建核心转储。即使是“发布”版本。不应要求用户手动执行命令“ ”。 该核心转储的回溯应该能够给出调用的文件,函数,行号。那是人类可

  • 我用wiringPiISR#得到了一个核心转储 Java运行时环境检测到一个致命错误:#Internal error(os_linux_zero.cpp:254),PID=6552,TID=1866855520致命错误:捕获未处理信号11

  • 问题内容: 每次我的应用程序崩溃时,都不会生成核心转储文件。我记得几天前,它 是 在另一台服务器 上 生成的。我正在使用bash屏幕运行应用程序,如下所示: 如您所见,如果要生成核心转储,则在使用哪个选项很重要,但是当遇到分段错误时,它仍然不会生成。我该如何运作? 问题答案: 确保当前目录(崩溃时可能会更改目录)是可写的。如果服务器调用,则该目录必须是该用户可写的。 同时检查。这可能会将核心转储重

  • 我试图用Java编写一个串行通信类,它将使用Java Simple serial Connector库连接到Arduino UNO。然而,每当我试图打开端口时,我都会在本机代码中遇到这个错误: # #Java运行时环境检测到一个致命错误: # #exception_access_visire(0xC0000005)at pc=0x0000006EC4B5BB,PID=6324,TID=6508 #

  • 问题内容: 运行C程序时,它显示 “((核心转储)”), 但是在当前路径下看不到任何文件。 我已经设置并验证了: 我也试图找到一个名为“ core”的文件,但是没有得到core dumped文件? 任何帮助,我的核心文件在哪里? 问题答案: 阅读/usr/src/linux/Documentation/sysctl/kernel.txt。 [/ proc / sys / kernel /] cor

  • 考虑以下代码: 它应该从循环到(231-1),但它没有。一旦达到224,就不再工作了,原因我完全无法理解。 在VS的即时窗口中,我尝试了以下方法: 为什么会这样?2241有什么特别之处?