CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  移动平台 >  Symbian

内存操作的问题

楼主smjacky(jacky)2006-03-03 11:46:20 在 移动平台 / Symbian 提问

如下这条内存操作的语句:  
   
  *(TUint16*)(iBmpAddr   +   iLine*176*2   +   iPixNum*2)   +=   *(TUint16*)pix.color;  
   
  在模拟器上运行没有问题,可是到真机上执行一次就挂掉了(这是循环体里的语句)。  
  想不通,真机跟模拟器在内存布局上有什么不同?  
  我这条循环语句的功能是对位图做差值操作,即对前幅位图的值进行一定的差值计算,得到后一幅位图,这样可以节省传输的数据量  
  可是这里执行   +=   的时候,在真机上程序就直接退出了  
   
  其中iBmpAddr是位图的内存地址,pix.color是象素点的值  
  iBmpAddr   =   (TUint8*)iBitmap->DataAddress();  
  typedef   struct    
  {  
  TUint8 num;  
  TUint8 color[2];  
  }PIXSTRUCT;   //pix的结构定义  
   
  问题点数:20、回复次数:4Top

1 楼chenziteng(陈子腾)回复于 2006-03-03 13:19:21 得分 0

.  
   
    访问内存时ARM芯片强制要求地址是字对齐(即可以整除32),   否则就会发生访问冲突.  
   
    到诺基亚论坛上你发的贴子那儿找我推荐的文档看吧。  
  http://discussion.forum.nokia.com/forum/showthread.php?t=75529Top

2 楼chenbinghui(阿炳)回复于 2006-03-08 23:52:50 得分 0

访问内存时ARM芯片强制要求地址是字对齐(即可以整除32),   否则就会发生访问冲突.  
  不完全对。  
  short类型应该2字节对齐,int类型应该是4字节对齐,对齐的意思数据的头地址应该什么的倍数。  
  Top

3 楼chenbinghui(阿炳)回复于 2006-03-08 23:53:25 得分 0

你这个问题肯定是iBmpAddr   =   (TUint8*)iBitmap->DataAddress();中的iBmpAddr   有可能是单数。Top

4 楼chenziteng(陈子腾)回复于 2006-03-09 00:36:18 得分 0

To   chenbinghui(阿炳):  
   
  的确:),8、16、32,多少位的类型就要求以多少位对齐。  
  Top

相关问题

  • 内存有关的操作
  • 内存操作的问题。
  • 内存操作(高手进)
  • 关于内存操作的问题
  • 数据库操作内存不足?
  • WinME:最吃内存的操作系统
  • 高分求教:MFC内存操作
  • 内存流读写文件的操作?
  • 如何对内存进行操作?
  • 在c#中操作内存的问题

关键词

  • 内存
  • 语句
  • ibmpaddr
  • tuint
  • 操作
  • pix
  • 访问
  • 地址
  • 类型
  • 问题

得分解答快速导航

  • 帖主:smjacky

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo