내가 함수로 매트릭스의 생성을 포장하려고하지만이 책에서 추출한 다음 코드 이해하려고 노력하는 데 문제가있는 sizeof 연산자의 사용 : 나는했습니다malloc에
// An error checked malloc() wrapper function
void *ec_malloc(unsigned int size) {
void *ptr;
ptr = malloc(size);
if(ptr == NULL)
fatal("in ec_malloc() on memory allocation");
return ptr;
}
을 이미이 질문을 확인 :
Do I cast the result of malloc?
을 그리고 지금은 지금은 결과를 캐스팅 할 필요가 없습니다. 하지만 내가 이해할 수없는 것은 연산자가없는 malloc(size)
의 사용입니다.
// An error checked malloc() wrapper function
void **double_ec_malloc(unsigned int size) {
void **ptr;
ptr = malloc(size);
if(ptr == NULL)
fatal("in ec_malloc() on memory allocation");
return ptr;
}
그리고 내가 할 :
int **matrixA = double_ec_malloc(size);
int i = 0;
for (i = 0; i < size; i++){
matrixA[i] = ec_malloc(size);
malloc
의
man
는 말한다 :
예를 들어, 매트릭스를 생성, 나는 또한이 기능을 만든
int **matrix
을 말할 수 malloc() 함수는 size 바이트를 할당하고 할당 된 메모리에 대한 포인터를 반환합니다.
하자가 ptr = malloc(size)
에 내가 4 바이트를 할당하고 다음 4
수 size
하지만, 매트릭스 형 int
인 경우. sizeof int * 4
이 필요하지 않습니까? 왜냐하면 지금은 정수 배열에 충분한 메모리를 할당하지 않을 것이라고 생각하기 때문입니다.
이것은 의미가 없습니다. 왜 당신은'void **'를'malloc() '래퍼에서 돌려 주겠습니까? 'sizeof'는 무엇이 문제입니까? ** ** ** ** ** ** ** ** ** ** 당신이 그것을 정확하게 사용해야만한다는 것을 알고 있다면, 왜 그것을 사용하지 않습니까? –
그 책은 그것으로 가득 차 있습니다. 'malloc()'은 적어도 요즘에는'int'가 아닌'size_t' 인수를 기대합니다. – EOF