- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请原谅我可能听起来很愚蠢,但我是一名生物专业的学生,最终从事软件开发工作(从未有过一门关于编码的学科)。所以编码不是我的强项,但我真的很想学习。
现在已经不在了:指针。
我正在用 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/
我是一名优秀的程序员,十分优秀!