当前位置: 代码迷 >> Symbian >> 3rd_MR版本的描述符有关问题
  详细解决方案

3rd_MR版本的描述符有关问题

热度:9308   发布时间:2013-02-26 00:00:00.0
3rd_MR版本的描述符问题
在MR版本开发的过程中,发现一个奇怪的问题,在模拟器中测试都好使,但是在真机测试的时候,
我使用的指针描述符的size大小大大的超越了我设置的大小,老是报数组越界的错误,
找了半天原因无果而终,希望大家帮忙看一下,
以下是具体代码:



------解决方案--------------------------------------------------------
这个我觉得不应该是越界 而是栈缓冲区溢出:
TBuf8<1024> ibuf, sec;
TBuf8<1024> temp;
这三个变量就是3KB的栈空间;而且楼主说模拟器没问题,那是因为模拟器栈空间足够,真机上栈空间不能如此浪费的
楼主可以使用HBufC试试,将内存放到堆上
------解决方案--------------------------------------------------------
楼主说的问题确实有点怪异,但问题可能出在这里,
TUint8 block[4 * MAXBC];
TPtr8 blockPtr(block, 1024);
1024是否等于4 *MAXBC
TPtr是一个描述符指针,他本身是不负责内存的申请和释放的,构造时需要告诉他首地址和最大长度,然后它像c里边的char*一样访问、修改从首地址开始的这片内存中的字符。
如果4 *MAXBC < 1024时,实际上是存在着内存的非法访问的问题;当然,如果 4 *MAXBC >= 1024应该不会有问题,一般而言我们会这么写TPtr8 blockPtr(block, 4 * MAXBC)。
  相关解决方案