zoukankan      html  css  js  c++  java
  • 内存数据拷贝溢出问

    一次在数据处理时内存数据被迫刷新问题,定义了两个结构体变量 u8 A,u8 B。这两个变量是顺序定义的,那在内存中的地址也是相连的,A 内存为1K,B内存为600b,他们都从同一个地址拷贝数据。当我调试时发现,每当我收到变量A拷贝数据时B 变量的数据也被刷新一次。

    #define  CopyDataNum 2000  //拷贝数据量

    pData[CopyDataNum];

    u8*pt;

    case 1:

    pt = &A;

    for(i=0;i<CopyDataNum;i++)

    {  

      pt++=pData[i];

    }

    break;

    case 2:

    pt = &B;

    for(i=0;i<CopyDataNum;i++)

    {  

      pt++=pData[i];

    }

    break;

    有经验的人一看就能看出来for那里都已经内存溢出了,因每次都拷贝了2K的内容,而A 和B内存大小只是1K和600b,所以每次拷贝上一个数据都会因为溢出把下一个数据也刷新了一边。

    修改如下就可以解决问题了。

    case 1:

    pt = &A;

    for(i=0;i<siezof(A);i++)

    {  

      pt++=pData[i];

    }

    break;

    case 2:

    pt = &B;

    for(i=0;i<siezof(A);i++)

    {  

      pt++=pData[i];

    }

    break;

  • 相关阅读:
    第一个只出现一次的字符
    把数组排成最小的数
    整数中1出现的次数
    连续子数组的最大和
    最小的K个数
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    numpy中ravel()和flatten()
    复杂链表的复制
  • 原文地址:https://www.cnblogs.com/mouou/p/3043518.html
Copyright © 2011-2022 走看看