我不明白我做错了什么。我的代码应该只是从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.访问sinal[0]
和sinal[i]
时,sinal
还没有任何容量。
2.使用浮点数作为下标是不寻常的,可能会导致错误发生。下标通常是要访问的项的偏移量,因此如果我要访问第五个元素,我使用4
的下标,因为我将4
空格前移到第五个元素。如果我使用1.5
作为下标,那么我正在尝试向前移动1
和1/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有什么特别之处?