#include <stdio.h>
#include <stdlib.h>
#define ERROR -1
#define OK 0
int testFunc(int * pIntA)
{
if (NULL == pIntA)
{
return ERROR;
}
//*pIntA = 0x1000;
return OK;
}
int main()
{
char *pcTestA;
pcTestA = (char *)malloc(sizeof(char));
if(NULL == pcTestA)
{
return ERROR;
}
int retVal = testFunc((int*)pcTestA);
free(pcTestA);
return OK ;
}
#include <stdlib.h>
#define ERROR -1
#define OK 0
int testFunc(int * pIntA)
{
if (NULL == pIntA)
{
return ERROR;
}
//*pIntA = 0x1000;
return OK;
}
int main()
{
char *pcTestA;
pcTestA = (char *)malloc(sizeof(char));
if(NULL == pcTestA)
{
return ERROR;
}
int retVal = testFunc((int*)pcTestA);
free(pcTestA);
return OK ;
}
解决方案
20
pcTestA = (char *)malloc(sizeof(char)); 后,pcTestA所指向的位置只有1个字节((sizeof(char))的空间可以合法使用
*pIntA = 0x1000; 强转后,要使用的空间为sizeof(int)个字节,一般比1大,用到了不该用的,很可能要出问题
*pIntA = 0x1000; 强转后,要使用的空间为sizeof(int)个字节,一般比1大,用到了不该用的,很可能要出问题