문자열을 저장하기 위해 2D 배열로 구조체를 만들려고합니다. 하지만 난이 프로그램을 실행할 때 두 번 무료로 오류가 계속구조체의 2D 배열이 가능합니까?
구조체 다음을 야기 된 것으로 판단 될 것입니다
struct room * newRoom = malloc(sizeof(struct room));
newRoom->floor = malloc(sizeof(char *) * height);
if(newRoom->floor == NULL || newRoom == NULL)
{
printf("Room allocation failed \n");
}
for(i=0; i<width ;i++)
{
newRoom->floor[i] = malloc(sizeof(char) * (width + 1));
if(newRoom->floor[i] == NULL)
{
printf("Room string allocation failed \n");
}
}
내 무료, 다음은
struct room{
int x;
int y;
char ** floor;
};
내 malloc에있다 오류 :
for(i=0; i<size ;i++)
{
free(toBeFreed->floor[i]);
}
free(toBeFreed->floor);
free(toBeFreed);
나는 문자로 채우는 이외의 다른 배열을 사용하지 않습니다. ops) 그리고 mvprintw()를 호출하지 마십시오. 사이에 문제가 있다고 생각합니다. 내가 뭘 잘못하고 있니?
편집 : 그래서 분명하지만 했어야 폭 == 높이 == 크기, 변수가 다른 파일에있는, 그래서 그들은 조금
EDIT2 다를 수행합니다! 분명히 높이 = 폭, 그리고 내가 할 수있는 ' 심지어 내 자신의 변수 이름을 유지하지 마라! 할당 할 때
원래 '\ 0'문자로 문제가 있다고 생각했기 때문에 +2가 사용되었습니다. 높이 +1 크기로 다시 변경했습니다. 높이 = 크기 = 너비로, 다른 파일의 미리보기이므로 변경하는 것을 잊었습니다. 복사/붙여 넣기 할 때 그들 – jrisebor
@ Snipe07하지만 여전히 작동하지 않니? 만약에 아마 당신은 자유를 두 번하는 루틴을 부르고 있습니까? 무료 루틴에서 중단 점을 설정하고 값이 무엇인지 알기 위해 가파른가요? – stefan
높이 고침! = 너비 좀 더 나은 변수 이름을 사용해야합니다! 고맙습니다! – jrisebor