小编kar*_*med的帖子

C ++:为什么这段代码给我内存问题/不确定的行为?

如果您有兴趣,可以了解一些背景知识...

下一段代码是尝试使用循环冗余校验(CRC-15)来实现数据包错误代码生成器的尝试。这用于检测通信数据损坏。不需要更详细的介绍。

守则和问题

init_PEC15_Table函数是一个查找表生成器。

pec15函数接受数据输入,计算解决方案的地址,并在查找表中找到结果。

data是一个char数组,我为其分配了值1。这将传递给pec15。

现在,我发现只需重新排序cout命令,“ stuffed pec”(即我感兴趣的输出)的值就会发生变化。通过在线阅读,我了解到这可能是由于内存堆栈意外更改而影响结果寄存器,并且可能是由于其他变量的越界操作所致。我是否理解错误?

现在,我是一个初学者,这非常令人生畏。我可能犯了一些我不知道的重大错误,因此请随时将代码撕碎。同样,如果重要的话,此代码也可以在mbed LPC1768上运行。

#include <iostream>


using namespace std;

unsigned short pec15Table[256];
const unsigned int CRC15_POLY = 0x4599;



void init_PEC15_Table() // Cyclical Redundancy Check lookup table generator function
{
    unsigned short rem;
    for (int i = 0; i < 256; i++)
    {
        rem = i << 7;
        for (int bit = 8; bit > 0; --bit)
        {
            if (rem & 0x4000)
            {
                rem = ((rem << 1));
                rem = (rem ^ …
Run Code Online (Sandbox Code Playgroud)

c++ memory mbed

1
推荐指数
1
解决办法
96
查看次数

标签 统计

c++ ×1

mbed ×1

memory ×1