gpt4 book ai didi

c++ - 坏指针和乱码数据

转载 作者:行者123 更新时间:2023-11-28 05:10:58 25 4
gpt4 key购买 nike

请原谅我可能听起来很愚蠢,但我是一名生物专业的学生,​​最终从事软件开发工作(从未有过一门关于编码的学科)。所以编码不是我的强项,但我真的很想学习。

现在已经不在了:指针。

我正在用 Visual C++ 编写一个用于串行通信的应用程序,过去三天一直在努力输出正确的数据。

这是相关的代码块:

//The ports have been opened, data has been written and the  rest follows
//Initialising buffer

DWORD dwBytesRead = 0;
BYTE* abBuffer = NULL; // Instance 1


do
{
// Read data from the COM-port
serial2.Read(&abBuffer,sizeof(&abBuffer),&dwBytesRead); // Instance 2
if (dwBytesRead > 0)
{
CString a=(LPCTSTR)&abBuffer;//To check what is being read
SetDlgItemText(IDC_RECV,(LPCTSTR)&abBuffer);


}
else
MessageBox("No");
}
while (dwBytesRead == sizeof(&abBuffer));
//delete[] abBuffer;
//Close the port again

在调试时我可以看到实例 1 中的“abBuffer”是

abBuffer 0xcccccccc无符号字符 *

在实例 2 中是

abBuffer 0x00000000无符号字符 *

我知道实例 1 的值是使用的模式代码,因为我在该行之前放置了一个断点,而 2 为 NULL,但为什么是坏指针?

我收到的数据也很奇怪。

尝试 1:

发送数据:“嗨”

收到的数据:“hiÜÜÌÌÌÌÌÌÌÌ”

尝试 2:

发送数据:“hihihi”

收到的数据:“hiÜÜÌÌÌÌÌÌÌÌ”

尝试 3: 检查数据的哪一端被剪切

发送数据:“aibicidi”

接收到的数据:“cidiÌÌÌÌÌÌÌÌ”

else 子句触发了为什么?

尝试 4: 检查截断点是什么,结果是 4 个字节

发送数据=“麦克”

接收到的数据 = "mikeÌÌÌÌÌÌÌÌ"

触发else子句

知道为什么我的数据会出现乱码吗?

有三个主要问题,但它们相互关联,这就是我来这里的原因。

帮忙吗?

最佳答案

您有多个问题。以abBuffer 开头的是一个空指针。您不能将数据写入它指向的位置。其次,&abBuffer 为您提供了一个指向变量 abBuffer 的指针。

第一个问题的解决方案是分配内存给abBuffer指向。最简单的方法是使用数组 而不是指针。

第二个问题的解决方案是不使用寻址运算符,而是使用普通的abBuffer

关于c++ - 坏指针和乱码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43512166/

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