写入位置0x0000000a时发生访问冲突
Access violation writing locations 0x0000000a
我制作了一个简单的程序,在这个程序中,我用用户输入的参数执行一个程序,但每当我运行它时,它都会给我错误
"Unhandled exception at 0x00f138b7 in SZP_Client.exe: 0xC0000005: Access violation writing location 0x0000000a."
我的代码是
char* command_text;
cout << "Enter SERVER IP Address without Port ";
cin >> command_text;
char* command_str = strdup("PServLib.exe "127.0.0.1" "30760" ");
string command_string_out_final= command_str;
command_string_out_final.append(command_text);
command_string_out_final = command_string_out_final + " "3627"";
system(command_string_out_final.c_str());
为什么我的代码会引发访问违规,以及如何修复它?
罪魁祸首是cin >> command_text
。当写入char*
时,它假设这是一个足够大的字符数组,可以容纳正在写入的值。相反,它是一个未初始化的char*
,所以您正在向任意内存中写入。
最简单的解决方法是将command_text
更改为std::string
。
char* command_text;
cout << "Enter SERVER IP Address without Port ";
cin >> command_text;
command_text
是一个未序列化的指针。为什么在代码中混合使用char*
和std::string
?只要在任何地方使用std::string
即可。
char* command_text;
cin >> command_text;
这是在读取一个没有分配空间的C风格字符串
使用C++字符串会更好
std::string command_text;
cin >> command_text;
其根据需要分配空间来存储输入。
您可能想要
string command_text;
而不是CCD_ 10。cin
将尝试将其输出放入string
,而不是char*
。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 插入数组时违反写访问冲突
- 使用 ReadProcessMemory 获取字符串值的访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 堆栈上的 C++ 访问冲突写入异常
- 引发异常:写访问冲突. temp 为 nullptr
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 在C++中删除双向链表的头节点后出现访问冲突异常
- 写入位置0x0000000a时发生访问冲突