n*********i 发帖数: 567 | 1 最近碰到的这个问题太奇怪了,以前从没碰到过。C语言XP平台,好像就是地址空间里
,有一个BYTE没法写入,怎么写它的值都不变。只在我的一个APP里有这种情况,就是
在MAIN函数里定义了一个STRUCT,不管用MEMSET还是直接赋值,那个位置的值始终是
0x0a,直接去内存地址里看也是一样,请问有人碰到过这种情况吗? |
t****t 发帖数: 6806 | 2 肯定你的程序有问题
【在 n*********i 的大作中提到】 : 最近碰到的这个问题太奇怪了,以前从没碰到过。C语言XP平台,好像就是地址空间里 : ,有一个BYTE没法写入,怎么写它的值都不变。只在我的一个APP里有这种情况,就是 : 在MAIN函数里定义了一个STRUCT,不管用MEMSET还是直接赋值,那个位置的值始终是 : 0x0a,直接去内存地址里看也是一样,请问有人碰到过这种情况吗?
|
n*********i 发帖数: 567 | 3 我估计可能是程序有问题,不过一点思路都没有,没碰到过这种奇怪的情况。我用
DEBUG进去看汇编指令,比如mov [edi],eax这句话以后,那个地址的值还没变,真是邪
门了。
【在 t****t 的大作中提到】 : 肯定你的程序有问题
|
E*V 发帖数: 17544 | 4 贴程序吧
【在 n*********i 的大作中提到】 : 我估计可能是程序有问题,不过一点思路都没有,没碰到过这种奇怪的情况。我用 : DEBUG进去看汇编指令,比如mov [edi],eax这句话以后,那个地址的值还没变,真是邪 : 门了。
|
n*********i 发帖数: 567 | 5 大致贴一下哈
int main(int argc, char* argv[])
{
HINSTANCE m_DLL;
FP_Open m_Open;
...... // 声明一些函数指针
unsigned int colorspace = 0;
int MemoryLeakTest = 0;
int CrashTest = 0;
bool bDecodeOnly = FALSE;
unsigned char* szRecBuffer = NULL;
Setting mysetting; // 我说的有问题的struct
memset(&mysetting, 0, sizeof(Setting));
//这里就不行了,比如mysetting.a的memset完以后还是0x0a。如果我写mysetting
.a = 2,值还是不变。
.... // 下面是LOAD一个DLL,LOAD FUN |
n*********i 发帖数: 567 | |
c*****t 发帖数: 1879 | 7 post Setting's declaration.
【在 n*********i 的大作中提到】 : 大致贴一下哈 : int main(int argc, char* argv[]) : { : HINSTANCE m_DLL; : FP_Open m_Open; : ...... // 声明一些函数指针 : unsigned int colorspace = 0; : int MemoryLeakTest = 0; : int CrashTest = 0; : bool bDecodeOnly = FALSE;
|
n*********i 发帖数: 567 | 8 这个不能POST。。。不过可以说一下,
大小是3120BYTE,里面都是INT,FLOAT,INT*等32位的变量,还有一些RESERVE的CHAR
型,不过都是4BYTE ALIGN的。刚才说错了,不能改的那个地方所对应的变量是INT型的
。不能赋值的在STRUCT里1K多左右BYTE的地方。
【在 c*****t 的大作中提到】 : post Setting's declaration.
|
n*********i 发帖数: 567 | 9 再补充一下,如果我用MALLOC的方式分配内存给那个STRUCT,把那个点的内存绕过去不
用,程序就完全没有问题。 |