C++ - 程序接收信号SIGSEGV,分段错误.In msvcrt!memcpy () (C:\Windows\S
C++ - Program received signal SIGSEGV, Segmentation fault.In msvcrt!memcpy () (C:WindowsSystem32msvcrt.dll)
我回到了c ++,我正在使用code::blocks。一切都很顺利,但我突然开始收到此错误
'
Program received signal SIGSEGV, Segmentation fault.In msvcrt!memcpy () (C:WindowsSystem32msvcrt.dll)
'
代码编译没有错误,但是当我选择选项 1"[1] - ..."它抛出该错误。
我用谷歌搜索了一下,但我找不到任何相关的东西,或者可以帮助我解决这个问题。
我的代码是这样的:
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int SeeData();
int ChangeData();
string AddTodo();
class Data {
public:
string name;
string surname;
string age;
string salary;
string todo[];
};
string dataArr[] = {"Bernardo", "Piedade", "19", "540.50"};
string todoArr[] = {"Create new functions"};
int sizeOfTodoArr = sizeof(todoArr) / sizeof(*todoArr);
int main() {
int _menuInput;
while (_menuInput != 0) {
cout << "[1] - See datan[2] - Change datan[3] - Add TODOn[0] - "
"Exitnn>>";
cin >> _menuInput;
if (_menuInput == 1) {
SeeData();
} else if (_menuInput == 2) {
ChangeData();
} else if (_menuInput == 3) {
AddTodo();
} else if (_menuInput == 0) {
system("exit");
} else {
cout << "Option not available";
system("cls");
}
}
return 0;
}
int sizeOfData = sizeof(dataArr) / sizeof(*dataArr);
int SeeData() {
Data _myData;
_myData.name = dataArr[0];
_myData.surname = dataArr[1];
_myData.age = dataArr[2];
_myData.salary = dataArr[3];
string person[sizeOfData];
for (int i = 0; i < sizeOfTodoArr; i++) {
_myData.todo[i] = todoArr[i];
}
for (int i = 0; i < sizeOfData; i++) {
person[i] = dataArr[i];
}
for (int i = 0; i < sizeOfData; i++) {
cout << "Name: " << person[0] << "nSurname: " << person[1]
<< "nAge: " << person[2] << "nSalary: " << person[3] << "nn";
cout << "Todo List: nt";
for (int j = 0; j < sizeOfTodoArr; j++) {
cout << "nt" << todoArr[j];
}
}
}
int ChangeData() {}
string AddTodo() {}
编辑:正如u/Uninitialized所说,发生错误是因为数组todo[]没有起始大小。
(0xC0000005( 错误代码表示内存访问冲突。错误消息指出分段错误是由 msvcrt.dll 文件中的 memcpy(( 例程引起的,即使您没有显式使用该指令。类 Data 中的 todo[] 成员似乎很可疑,因为它没有分配固定的大小(不明白你的编译是如何成功的,但你可能应该将其初始化为已知大小并检查(
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- C++ - 程序接收信号SIGSEGV,分段错误.In msvcrt!memcpy () (C:\Windows\S