번역 된 언어 배경에서 C
으로 시작하고 있는데 왜 작동하지 않는지 이해하는 데 문제가 있습니다.동적 배열의 주소 경계 오류
나는 Dynamic_Array
구조체 (http://pastebin.com/h4k7Sk3U) 및 Task
구조체 (http://pastebin.com/evs4TEQA)를 가지고 있습니다.
“./ctask ” terminated by signal SIGSEGV (Address boundary error)
나는 그것의 dynamic_array.h:16
에 유래 보여줍니다 gdb
와 오류, 추적 :
초기 크기의 Dynamic_Array
인스턴스를 생성 내가 얻을
Dynamic_Array *dynamic_array_create(size_t initialSize) {
Dynamic_Array *a;
a->array = (Task *)malloc(initialSize * sizeof(Task)); // line 16
a->used = 0;
a->size = initialSize;
return a;
}
내가 잘못하고있는 중이 야 무엇을 그곳에? 초기 크기에 Task
구조체의 크기를 곱해서, 구조체가 충분한 메모리라고 가정합니다.
15 번째 줄에는 "나는 'a'라는 포인터가 있습니다. 실제로 가리 키기위한 객체를 만들지 않았습니다. 15 ~ 16 행은'var a; a.foo = ...;'JavaScript에서. (또한'malloc'의 반환 값을 캐스팅 할 필요가 없습니다.) – DCoder