Ioannis Koutras 13 роки тому
батько
коміт
59c8f119ab
3 змінених файлів з 12 додано та 11 видалено
  1. 5 2
      LeaHeader.c
  2. 1 3
      LeaHeader.h
  3. 6 6
      sys_alloc.c

+ 5 - 2
LeaHeader.c

@@ -1,11 +1,10 @@
 #include "LeaHeader.h"
 
 //returns a pointer to the header of the block	
-leaHdr * getHeader(const char * ptr) {
+leaHdr *getHeader(const char * ptr) {
 	return (leaHdr *) (ptr - HDR_SIZE);
 }
 
-
 size_t getSize (void *ptr) {
 	return (getHeader(ptr)->size >> 1);
 }
@@ -15,6 +14,10 @@ size_t getPrevSize (void *ptr) {
 	return sz >> 1;
 }
 
+void *getNext(void *ptr) {
+	return (void *)((char *) ptr + HDR_SIZE + getSize(ptr));
+}
+
 void setSize(void *ptr, size_t sz) {
 	size_t size = getSize(ptr);
 	size = ((size & 1) | (sz << 1));

+ 1 - 3
LeaHeader.h

@@ -18,16 +18,14 @@ typedef struct LeaHeader* leaHdr_ptr;
 //returns a pointer to the header of the block	
 leaHdr * getHeader(const char * ptr);
 
+void *getNext(void *ptr);
 
 size_t getSize(void *ptr);
 
-
 size_t getPrevSize (void *ptr);
 
-
 void setSize(void *ptr, size_t sz);
 
-
 void setPrevSize (void *ptr, size_t sz);
 
 

+ 6 - 6
sys_alloc.c

@@ -11,9 +11,9 @@ void setHeaders(void *ptr, size_t sz) {
 	sz = req_padding(sz);
 	setSize(ptr,sz);
 	markInUse(ptr);
-	setPrevSize(getNext(ptr),sz);
-	setSize(getNext(ptr),0);//border block
-	markInUse(getNext(ptr));//border block
+	setPrevSize(getNext(ptr), sz);
+	setSize(getNext(ptr), 0); //border block
+	markInUse(getNext(ptr)); //border block
 }
 
 void *sys_alloc(size_t size) {
@@ -34,13 +34,13 @@ void *sys_alloc(size_t size) {
 
 		//printf("sbrk = %p\n",ptr);
 
-		setPrevSize(ptr + HDR_SIZE,0);
+		setPrevSize((char *) ptr + HDR_SIZE, 0);
 		markPrevInUse(ptr + HDR_SIZE);
-		borderPtr  = ptr;
+		borderPtr = ptr;
 
 	} else {
 
-		ptr =  sbrk(allocation_size);
+		ptr = sbrk(allocation_size);
 
 		if ((ptr == (char *) -1)){
 			printf("sbrk Fail: out of Memory\n");