Използвайки кода по-долу, се опитвам да напиша обвивка за calloc()
, така че да мога да проследя разпределената памет, като съхранявам размера в 1-ви 2/4 байта от разпределената памет. Когато тествах само това, изглежда, че е добре. Но когато заменя това като моя система calloc()
, това създава проблеми.. означава, че понякога се връща NULL
, въпреки че има много налична купчина.
Изпълнявам това на ARM борда, използвайки IAR компилатор:
void *MyCalloc(size_t size) {
size_t new_size = ((size + 3) & ~0x3);
size_t *result = calloc(1,new_size + sizeof(size_t));
if ( result ) {
printf("MyCalloc addr: %p\n", result);
*result = (new_size + sizeof(size_t));
result = result + sizeof(size_t);
}
return result;
}
Някаква идея защо това създава проблем?
calloc
? - person cnicutar   schedule 16.02.2013