나는 약간의 기억이 있고 나는 그것을 여러 조각으로 할당하려한다. 그래서 나는 연결된 목록을 가지고 있습니다. 각 노드는 할당 된 메모리 조각과 다음 노드의 크기를 추적합니다.포인터 + int 대 포인트 -
리퀘 스터에 포인터를 반환하면 리퀘 스터가 사용할 메모리가 필요하기 때문에이 노드가 끝난 직후 포인터를 반환합니다 (return newNode + sizeOf (node)).
노드를 변경하여 문제를 해결하려고하면 문제가 발생합니다. 포인터로 myFree를 호출 할 때 포인터 크기 sizeOf (노드)를 사용하여 노드에 도달하면 작동하지 않습니다.
내가 뭘 잘못하고 있니?
나는 그것이 유용하지만, 여기에 몇 가지 코드를 생각하지 않습니다 :
#define HEADER(24)
printf("Original pointer %-10p\n", pointer);
head *toUse = pointer + HEADER;
printf("Pointer to memory to be used %-10p\n", toUse);
printf("Trying to read the header again %-10p\n", toUse - HEADER);
첫 번째와 세 번째의 printf 나에게 다른 주소를 제공합니다. 그것이 문제이다.
테스트의 경우 처음에는 한 조각의 메모리 만 할당하고 여전히 작동하지 않습니다.
일부 코드를 표시 할 수 있습니까? – chris
코드하십시오 .... – Mike
여러 청크로 할당하는 경우 청크가 서로 옆에 있지 않을 수 있으므로 pointer-sizeof (노드)가 반드시 이전 노드의 시작 부분에 놓는 것은 아닙니다. –