난 내 프로젝트, 내가 사용하고 코드에 대한 tcpdump와의 mallocs를 기록하는 코드를 조금 사용하려고 해요 따라서입니다 할당 크기를 기록하려면 온라인으로 많은 비슷한 질문이 작동해야하지만, 내 사용자 지정 malloc 호출되는 것 같지 않습니다. 어떤 도움을 주시면 감사하겠습니다.재정의 malloc은
답변
각 소스 파일의 malloc 매크로는 다시 #define
이어야합니다. 따라서 매크로가 정의 된 헤더 파일을 포함시켜야합니다.
이것은 문제가 아닙니다. 문제는'my_malloc'이 스스로를 호출한다는 것입니다. –
이것은 OP가 요청한 것이 아닙니다. 미안합니다. 그러나 헤더 파일을''my_malloc()''을 정의하는 소스 파일에''#include ''하지 말고,''#include'' 대신에''stdlib.h'' 파일을 정의하십시오. 또한''malloc()''_after_ the''stdlib.h''를 재 정의하는 헤더 파일을 포함시켜야한다는 것을 명심하십시오. – ckruse
실제로는 malloc
을 사용중인 파일에 define
을 표시하지 않아야합니다. 모든 구현 파일에 포함 된 공통 헤더에 넣으십시오.
편집 : 문제가 함수 자체를 호출하는 경우 함수 선언 다음에 define
을 이동해야합니다.
malloc은 * 키워드 *가 아니며 기본 RT보다 우선 적용되는 경우 자유롭게 대체 할 수있는 함수 이름입니다. – Necrolis
malloc은 키워드가 아닌 라이브러리 함수의 이름입니다. –
'malloc'은 키워드 (예약 식별자)가 아니지만 다른 식별자 ('#define malloc __Malloc')에 대한 매크로로 구현 된 것 같습니다. –
실제 malloc
을 호출 할 때 의 malloc
이 my_malloc
에 의해 호출되는 것이 문제입니다. 그 이유는 전 처리기가 을 my_malloc
으로 변환하기 때문입니다.
#define malloc(size) my_malloc(size)
unsigned int memCount = 0;
void *my_malloc(size_t size) {
void *p = malloc(size);
memCount = memCount + size;
printf("Memory Allocated :%zu \n", size);
return p;
}
int main(void) {
malloc(123);
return EXIT_SUCCESS;
}
실제로 얻을 것이다 :
unsigned int memCount = 0;
void *my_malloc(size_t size) {
void *p = my_malloc(size);
memCount = memCount + size;
printf("Memory Allocated :%zu \n", size);
return p;
}
int main(void) {
my_malloc(123);
return 0;
}
당신은 here을 입증하는 실제 malloc
에 액세스 할 필요가
- 1. 선호의 malloc은 calloc 이상
- 2. malloc은 4 비트 만 할당합니까?
- 3. malloc은 다른 컴퓨터에서 다르게 동작합니다.
- 4. malloc은 메모리 정렬에 어떤 보장을합니까?
- 5. 재정의 재정의?
- 6. 스택이란 무엇이며 왜 malloc은 오버플로를 방지합니까?
- 7. Malloc은 C 문자열에 대해 쓰레기가 있습니까?
- 8. 어떻게 realloc가 작동하지 않지만 malloc은 작동합니까?
- 9. malloc은 0에서 양의 무한대까지 메모리를 할당합니까?
- 10. 함수 malloc은 NULL을 반환하지만 ... 처음 10 번만
- 11. 파생 클래스 재정의 재정의
- 12. 재정의 *
- 13. 재정의?
- 14. 재정의 된 CSS 속성이 취소되었거나 재정의 되었습니까?
- 15. Qt. 무거운 응용 프로그램에서 QString 재정의 재정의 :
- 16. 재정의 함수에서 재정의 된 함수 호출
- 17. 같음을 재정의 할 필요가없는 경우 HashCode 재정의
- 18. 재정의 C++
- 19. SetThreadExecutionState 재정의
- 20. 길이의 재정의?
- 21. 다형성/재정의
- 22. 재정의 기본값은
- 23. 재정의 속성은
- 24. 속성 재정의
- 25. 재정의 방법은
- 26. 재정의 방법
- 27. Graphics.DrawLine 재정의
- 28. C++ 재정의
- 29. method_missing 재정의
- 30. 메서드 재정의
다음을 확인하십시오 : http://stackoverflow.com/questions/262439/create-a-wrapper-function-for-malloc-and-free-in-c – LihO
코드에서'malloc'을 재정의하거나 이미 컴파일되었습니다. 암호? 또한 매크로가 전역 수준에서 정의되어 있는지 확인하고, 'malloc'을 사용할 때마다 볼 수 있습니다. – Necrolis