首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

异常Exception:0xC0000005,指针越界有关问题

2012-01-19 
错误Exception:0xC0000005,指针越界问题在DLL里,定义一个全局的charbuffer[READ_BUFF_SIZE]A(){去填充buf

错误Exception:0xC0000005,指针越界问题
在DLL里,定义一个全局的char   buffer[READ_BUFF_SIZE];
A(   )
{
    去填充buffer的内容;

}

B(   )
{
    char   *ptr   =   buffer;
   
    ptr   +=2;
    .......
    ptr   +=4;
    ........
    对ptr进行处理;  
}
出现错误Exception:0xC0000005
如果在B里对buffer定义,附值,把buffer做为一个局部的变量,就没问题,
所以可以很确定是   buffer全局的问题;但两个函数共用一个变量就只能定义为全局的
不知道这样表述是否完整,望各位帮忙一下,
小弟先谢谢了.


[解决办法]
"如果在B里对buffer定义,附值,把buffer做为一个局部的变量,就没问题, "
----------------------------------------

那么你的A函数如何访问B函数中的buffer呢?


"但两个函数共用一个变量就只能定义为全局的不知道这样表述是否完整 "
----------------------------------------
我尝试给个建议:
取消全局变量,把buffer做为一个局部的变量,但是作为参数传递给A函数


如果你的A和B函数是线程函数,就需要线程同步技术了

[解决办法]
2个办法
1、
B( )
{
char *ptr = buffer;
ptr +=2;
if( ( ptr - buffer ) < READ_BUFF_SIZE ) {
对ptr进行处理;
}
...
...
ptr +=4;
if( ( ptr - buffer ) < READ_BUFF_SIZE ) {
对ptr进行处理;
}
...
...
}

2、
C( )
{
char buffer[READ_BUFF_SIZE];
A( buffer );
B( buffer );
}

A( char * buffer )
{
int i = 0;
while( i < READ_BUFF_SIZE ) {
*(buffer + i) = 'x ';
i ++;
}
}

B( char * buffer )
{
...
...
}
[解决办法]
我也觉得可以尝试将 buffer 定义为局部变量,用参数传递
[解决办法]
所以可以很确定是 buffer全局的问题;但两个函数共用一个变量就只能定义为全局的

绝对错误,是你用的问题

热点排行