29 lines
744 B
C
29 lines
744 B
C
|
|
#define DEBUG
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <string.h>
|
||
|
|
#include <assert.h>
|
||
|
|
#include "../include/mem.h"
|
||
|
|
|
||
|
|
int mem_is_zero(const void *ptr, size_t nbytes) {
|
||
|
|
assert(ptr);
|
||
|
|
assert(nbytes > 0);
|
||
|
|
static const unsigned char zero_block[1024] = {0};
|
||
|
|
while (nbytes >= sizeof(zero_block)) {
|
||
|
|
if (memcmp(ptr, zero_block, sizeof(zero_block)) != 0)
|
||
|
|
return 0;
|
||
|
|
ptr = (const unsigned char *)ptr + sizeof(zero_block);
|
||
|
|
nbytes -= sizeof(zero_block);
|
||
|
|
}
|
||
|
|
if (nbytes > 0 && memcmp(ptr, zero_block, nbytes) != 0)
|
||
|
|
return 0;
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
int main(void){
|
||
|
|
size_t nbytes = 20;
|
||
|
|
void *ptr = ALLOC(0, nbytes);
|
||
|
|
assert(ptr != NULL);
|
||
|
|
assert( mem_is_zero(ptr, nbytes));
|
||
|
|
return EXIT_SUCCESS;
|
||
|
|
}
|