在BCB中不能直接通过地址来访问内存吗?帮帮忙,看我这段代码为什么提示"非法内存访问"
小第学BCB不久,不知道能不能直接通过地址来访问内存,编了以下代码试的时候提示"非法内存访问"
#define MK_FP(seg,ofs) ((void *)(((unsigned long)(seg)<<16)|(unsigned)(ofs))) //用于通过段地址和偏移地址组成要访问的地址.本来这个宏在bc的dos.h中有的,但是bcb中没有,没办法只好把它的原型找出来拷贝在这里了.:)
......
......
......
unsigned *p1;
unsigned segadr=0xd004;
p1=(unsigned int *)MK_FP(segadr,0X0004);
while((*p1)!=0){
*p1=*p1&0x07ff|0x0800;
p1+=8;
}
运行时提示在访问0xd0040004的时候非法.
bcb中能这么直接访问内存吗?
如果不能应该怎么做呢?