free_memory 함수 내에서 세분화 오류가 발생하는 이유를 알지 못합니다. 여기에 프로그램입니다 :C에서 메모리를 해제하는 동안이 오류를 인식 할 수 없음
Process 1433 launched: '/Users/Jaime/Documents/workspaceC/PruebasC/PruebasC/sk' (x86_64)
Allocated
Process 1433 stopped
* thread #1: tid = 0x1058a, 0x0000000100000e95 sk`free_memory + 37, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x0000000100000e95 sk`free_memory + 37
sk`free_memory:
-> 0x100000e95 <+37>: movq (%rcx,%rax,8), %rdi
0x100000e99 <+41>: callq 0x100000f20 ; symbol stub for: free
0x100000e9e <+46>: movl -0xc(%rbp), %eax
0x100000ea1 <+49>: addl $0x1, %eax
은 내가 나쁜 포인터를 액세스하고 왜하지 않는, 누군가가 나를 도울 수 있기를 바랍니다 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void allocate_memory (char **cells)
{
int i;
cells = (char **) malloc(9 * sizeof(char *));
if (cells == NULL)
{
perror("Couldn't allocate memory");
exit(1);
}
for (i = 0; i < 9; i++)
{
cells[i] = (char *) malloc(9 * sizeof(char));
if (cells[i] == NULL)
{
perror("Couldn't allocate memory");
exit(1);
}
memset(cells[i], 1, 9);
}
}
void free_memory (char **cells)
{
int i;
for (i = 0; i < 9; i++)
{
free(cells[i]);
}
free(cells);
}
int main (int argc, char *argv[])
{
char **cells = NULL;
allocate_memory(cells);
printf("Allocated\n");
free_memory(cells);
return 0;
}
디버거 오류에 대한이 메시지를 보여줍니다.
가능한 중복 : //stackoverflow.com/questions/40412010/reading-from-stdin-using-fgets) –