|
단순히 초기화를 시켜주실 목적이시라면, FillMemory API를 사용해보시는것도 좋습니다.
FillMemory([메모리 시작 주소], [크기], [값]);
이런 식으로 원하는 곳으로 값을 써 넣으실 수 있는데요, 단점이 있다면, 만약 0 이 아닌 다른 값을 넣으시고자 할때는, 값이 Byte 형으로 들어가기 때문에 비트연산이나 다른 연산이 필요하다는 점입니다.
아래 첨부해주신 소스에서는, 이렇게 해주시면 모든 값이 0으로 초기화 됩니다.
FillMemory(*InputData, Size, 0);
빌더매니아 님이 쓰신 글 :
: 2차원 이미지데이터 파일저장을 위해서 2차원 동적배열 생성,
: 초기화하는 함수를 만들려고 머릴 쥐어뜯고 있는데요,
:
: 이렇게 했답니다.
:
: int **InputData;
:
: void InitInputArray(int Size)
: {
: InputData = (int**)new int*[Size];
: for (int a=0; a<Size; a++)
: InputData[a] = (int*)new int[Size];
:
: for (int i=0; i<Size; i++)
: {
: for (int j=0; j<Size; j++)
: InputData[i][j]=0;
: }
: }
: 이렇게 하고 제대로 초기화 되었는지 에디트박스놓고
: Edit1->Text = StrToInt(InputData[0][0]); 이런식으로 확인해서 되는 것은 아는데요..
: 문제는 이렇게 하면 포인터 변수 **InputData를 매개변수로 받는것이 아니라서 임의의 포인터 변수를 이 함수만 불러서 초기화 시킬수가 없고 항상 InputData라는 변수밖에 초기화를 못 시키쟎아요..
:
: int **InputData;
: void InitInputArray(InputData, int Size)
: {
: InputData =
: ...........
: }
: 이렇게 하고 싶은데
: 컴파일은 넘어가는데 초기화가 안돼요.
: 도와주세요 고수님들..제가 포인터를 아직도 잘 모르나봅니다.
|