gpt4 book ai didi

c++ - 为什么会出现这个错误? - 段错误(核心已转储)

转载 作者:行者123 更新时间:2023-11-30 00:44:17 29 4
gpt4 key购买 nike

我的代码编译得很好。我正在使用我连接的另一台服务器运行和编译它。当我运行它时,我收到此错误消息 - 段错误(核心已转储)。当我在我的 mac 上本地编译和运行它时,它运行完美,只是当我使用 levi(我们用来提交文件的虚拟机)时不是这样。我该怎么做才能不收到此错误消息并运行我的代码?这是我的代码:

//
// ChaseGraingerSection6.cpp
//
// Created by Chase Grainger on 3/19/18.
//
// I typed all of this code on my own and did
// not copy any code from any outside sources.

#include <iostream>
#include <fstream>



int main() {

const int my_dimension = 10; // dimension of 'my_array'
std::string my_array[my_dimension]; // array of fixed amount of strings
int x = 0; // used to add lines of text form 'word.txt' to 'my_array'
int y = 0; // used when reversing array values
int num_of_lines = 0; // keeps track of # of lines in text file[s]
std::string text; // used when reading lines from 'word.txt'
std::string my_reversed_array[num_of_lines]; // reversed order array

std::ofstream outData; // output stream 'outData'
std::ifstream inData; // input stream 'inData'

inData.open("word.txt"); // opens input stream
while (getline(inData, text)) { // runs through each line in 'word.txt'
my_array[x] = text; // sets index value of array to line in text file
num_of_lines += 1;
x += 1;
}
inData.close(); // closes input stream

// at this point, my_array has the text needed

outData.open("chase.txt");

for (x = num_of_lines - 1; x >= 0; x--) { // assisngs values in reverse order from one array to another
my_reversed_array[x] = my_array[y];
y += 1;
}
for (x = 0; x <= num_of_lines - 1; x++) {
outData << my_reversed_array[x] << std::endl;
}

outData.close();
}

最佳答案

int num_of_lines = 0;
std::string my_reversed_array[num_of_lines];

这实际上不是有效的 C++,但在支持可变长度数组作为扩展的编译器上,这会创建一个零大小的数组。

现在,无论您使用哪个编译器,如果您更改 num_of_lines,此数组之后不会神奇地更改大小;那艘船已经起航了。

因此,无论何时写入 my_reversed_array,您都在写入不属于您的内存。

您将需要动态分配(或 std::vector),以便您可以创建具有运行时边界的数组 — 在您知道这些边界是什么之前不要这样做。

要回答您的下一个问题(为什么这不会在您的 Mac 上崩溃),您只是 [不] 走运。该程序不是需要崩溃;它的行为是未定义的。相反,它本可以召唤一位才华横溢的天才来回答您在 Stack Overflow 上的问题。哦……等等……;)

关于c++ - 为什么会出现这个错误? - 段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391505/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com