Class: MyMalloc
- Inherits:
-
Object
- Object
- MyMalloc
- Defined in:
- lib/my_malloc.rb,
ext/my_malloc/my_malloc.c
Constant Summary collapse
- VERSION =
"1.0"
Instance Method Summary collapse
- #free ⇒ Object
- #initialize(size) ⇒ Object constructor
Constructor Details
#initialize(size) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'ext/my_malloc/my_malloc.c', line 29
static VALUE
my_malloc_init(VALUE self, VALUE size) {
struct my_malloc *ptr;
size_t requested = NUM2SIZET(size);
if (0 == requested)
rb_raise(rb_eArgError, "unable to allocate 0 bytes");
Data_Get_Struct(self, struct my_malloc, ptr);
ptr->ptr = malloc(requested);
if (NULL == ptr->ptr)
rb_raise(rb_eNoMemError, "unable to allocate %" PRIuSIZE " bytes", requested);
ptr->size = requested;
return self;
}
|
Instance Method Details
#free ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'ext/my_malloc/my_malloc.c', line 49
static VALUE
my_malloc_release(VALUE self) {
struct my_malloc *ptr;
Data_Get_Struct(self, struct my_malloc, ptr);
if (0 == ptr->size)
return self;
ptr->size = 0;
free(ptr->ptr);
return self;
}
|