간접참조 에러입니다.. 어떻게 수정해야할까요..ㅠㅠ?
글쓴이: H4ckZ4 / 작성시간: 수, 2014/03/05 - 10:48오후
#include
#include
void Func(char *lpCmdShow)
{
int *b;
int *c;
int *a = (int*)malloc(8);
b = a;
int n2;
for(n2 = 0;lpCmdShow[n2] != 0;n2++);
c = (int*)malloc(n2+1);
*b = (int)c;
*(*(b+n2)) = 0; <--- 이부분 에러입니다 ㅠㅠ
}
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdShow, int nCmd)
{
Func(lpCmdShow);
return 0;
}
Forums:
b는 일차원 포인터입니다.
그렇기 때문에
*(b+n2)=0;
처럼 *은 하나만 앞에 나올 수 있습니다.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
답변감사합니다만..
지금 어셈블리어 상태로 보면
b포인터의 주소안에 있는 주소의 값 + 받은 문자열의길이 하여 byte형으로 0을 집어넣는 형태입니다.
어떻게 해야만이 저렇게 나올 수 있을까요??
MOV BYTE PTR DS [EAX+EDX] , 0
EDX = 받은 문자열의 길이
EAX = B포인터의 데이터 섹션에 있는 주소
*(unsigned char*)(b + n2) =
*(unsigned char*)(b + n2) = 0;
댓글 달기