From 558d5a7e038c49ab67e15e445ea2f1a08c99083b Mon Sep 17 00:00:00 2001
From: SungHo Park <shaco20@ajou.ac.kr>
Date: Thu, 14 Jun 2018 14:56:25 +0900
Subject: [PATCH] 2018_06_12 test finish

---
 alloc.c   | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 alloc.h   |  26 ++++++++-
 input.txt |   5 ++
 main      | Bin 0 -> 21236 bytes
 main.c    |  72 ++++++++++++++++++++++++-
 5 files changed, 256 insertions(+), 3 deletions(-)
 create mode 100644 input.txt
 create mode 100755 main

diff --git a/alloc.c b/alloc.c
index 931b9fd..0f0e0df 100644
--- a/alloc.c
+++ b/alloc.c
@@ -1 +1,157 @@
 #include "alloc.h"
+//start
+#include <stdio.h>
+#define _SYS/TYPES_H_
+#include <sys/types.h>
+
+meta *search_position(size_t size);
+extern int FIT = F;
+void *init = 0;
+void *last = 0;
+
+void *m_malloc(size_t size){
+  meta *search;
+  if (init == 0){
+    init = sbrk(0);
+    last = init;
+  }
+  size_t alloc_size = size + METASIZE;
+  if (last == init) search = -1;
+  else search = search_position(size);
+   
+  if (search == -1 || (!search->next && (!search->free || search->free && search->size < size))){
+    meta *new = last;
+    last += alloc_size;
+    if (sbrk(alloc_size) == -1) return 0;
+    new->free = 0;
+    new->next = 0;
+    new->prev = search;
+    new->size = size;
+    
+    if (search != -1) search->next = new;
+    search = new;
+  }
+  else m_realloc(search->data, size);
+  
+  return search->data;
+}
+
+void m_free(void *point){
+  meta *curr = point - METASIZE;
+  curr->free = 1;
+
+  if (curr->next && curr->next->free == 1){
+    curr->size += curr->next->size + METASIZE;
+    curr->next = curr->next->next;
+  }
+  if (curr->prev != -1){
+    if(curr->prev->free){
+      curr = curr->prev;
+      curr->size += curr->next->size + METASIZE;
+      curr->next = curr->next->next;
+    }
+    if (!curr->next){
+      last -= curr->size + METASIZE;
+      curr->prev->next = 0;
+    }
+  }
+  else if (!curr->next && !curr->prev) last = brk(init);
+  point = 0;
+}
+
+void *m_realloc(void *pointer, size_t size){
+  meta *curr = pointer - METASIZE;
+  if (curr->size == size) return pointer;
+  else if (curr->size < size){
+    if(curr->next && curr->next->free && curr->size + curr->next->size + METASIZE >= size){
+      curr->size += curr->next->size + METASIZE;
+      curr->next = curr->next->next;
+      curr->next->prev = curr;
+      if ((curr->size - size) < METASIZE) return pointer;
+      else {
+        meta *new = (int)curr + size + METASIZE;
+        new->prev = curr;
+        new->next = curr->next;
+        new->size = curr->size - size - METASIZE;
+        curr->next = new;
+        curr->size = size;
+        curr->free = 0;
+        m_free(new->data);
+        return curr->data;
+      }
+    }
+    else {
+      m_free(curr->data);
+      void *tmp = m_malloc(size);
+      strcpy(tmp, pointer);
+      return tmp;
+    }
+  }
+  else if ((curr->size - size) < METASIZE) return pointer;
+  else {
+    meta *new = (int)curr + size + METASIZE;
+    new->prev = curr;
+    new->next = curr->next;
+    new->size = curr->size - size - METASIZE;
+    curr->next = new;
+    curr->size = size;
+    curr->free = 0;
+    m_free(new->data);
+    return curr->data;
+  }
+}
+
+meta *search_position(size_t size){
+  meta *fix = init;
+  meta *position = -1;
+  
+  switch(FIT){
+  case F:
+    if (fix == NULL) break;
+    while(1){
+      if (fix->free && fix->size >= size){
+        position = fix;
+        break;
+      }
+      if (fix->next == NULL){
+        position = fix;
+        break;
+      }
+      fix = fix->next;
+    }
+    break;
+  case B:
+    if (fix == NULL) break;
+    while(1){
+      if (fix->size = size && fix->free){
+        if (position == -1) position = fix;
+        else if (position->size > fix->size) position = fix;
+      }
+      if (position == -1 && !fix->next) position = fix;
+      fix = fix->next;
+    }
+  break;
+  case W:
+    if (fix == NULL) break;
+    while(1){
+      if (fix->size >= size && fix->free){
+        if (position == -1) position = fix;
+        else if (position->size < fix->size) position = fix;
+      }
+      if (position == -1 && !fix->next) position = fix;
+      fix = fix->next;
+    }
+  break;
+  }
+  return position;
+}
+
+void print_alloc(){
+  meta *curr = init;
+  while(curr){
+    printf("free : %d / size : %d ",curr->free,curr->size);
+    if(!curr->free) printf("%s\n",curr->data);
+    else printf("\n");
+    curr = curr->next;
+  }
+}
diff --git a/alloc.h b/alloc.h
index 3245f55..c723808 100644
--- a/alloc.h
+++ b/alloc.h
@@ -1,8 +1,32 @@
 #ifndef _ALLOC_H_
 #define _ALLOC_H_
+//start
+#ifndef _STDINT_H_
+#define _STDINT_H_
+#include <stdint.h>
+#endif
 
-typedef struct meta_struct {
+#ifndef _SYS/TYPES_H_
+#define _SYS/TYPES_H_
+#include <sys/types.h>
+#endif
 
+#define F 1
+#define B 2
+#define W 4
+#define METASIZE 16
+
+typedef struct meta_struct {
+  uint32_t free;
+  uint32_t size;
+  struct meta_struct *prev;
+  struct meta_struct *next;
+  char data[1];
 } meta;
 
+extern int type;
+void *m_malloc(size_t size);
+void m_free(void *point);
+void *m_realloc(void *point, size_t size);
+
 #endif
diff --git a/input.txt b/input.txt
new file mode 100644
index 0000000..1a4ec36
--- /dev/null
+++ b/input.txt
@@ -0,0 +1,5 @@
+3 F
+s Think like a man of action and act like man of thought.
+s Courage is very important. Like a muscle, it is strengthened by use.
+s Life is the art of drawing sufficient conclusions from insufficient premises.
+
diff --git a/main b/main
new file mode 100755
index 0000000000000000000000000000000000000000..8ac88050a5d3f3c19d54904729c26a1d3bcc18ae
GIT binary patch
literal 21236
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

literal 0
HcmV?d00001

diff --git a/main.c b/main.c
index b5fba06..ede9f4a 100644
--- a/main.c
+++ b/main.c
@@ -1,6 +1,74 @@
 #include "alloc.h"
+#include <string.h>
+#include <stdio.h>
 
-int main()
-{
+extern int FIT;
+int main(int argc, char *argv[]){
+  if (argc < 2){
+    printf("Please input 2 argument\n");
+    return 0;
+  }
+  FILE *fp = fopen(argv[1],"r");
+  if (fp == NULL) return 0;
+  
+  char buf[4096];
+  char *token;
+  fgets(buf,sizeof(buf),fp);
+  token = strtok(buf," ");
+
+  int index = atoi(token);
+  if (index == 0) return 0;
+
+  token = strtok(NULL," ");
+  switch(token[0]){
+  case 'F':
+    FIT = F;
+    break;
+  case 'B':
+    FIT = B;
+    break;
+  case 'W':
+    FIT = W;
+    break;
+  default:
+    printf("FIT is in F,B,W\n");
+    return 0;
+  }
+
+  char **command = (char**)malloc(sizeof(char*)*index);
+  int tmp, init=0, resize;
+
+  for (int i=0;i<index;i++){
+    memset(buf,'\0',sizeof(buf));
+    fgets(buf,sizeof(buf),fp);
+    buf[strlen(buf)-1]='\0';
+
+    switch(buf[0]){
+    case 'f':
+      tmp = atoi(buf+2);
+      m_free(command[tmp]);
+      break;
+    case 'e':
+      tmp = atoi(buf+2);
+      command[init++]=m_malloc(tmp);
+      break;
+    case 'r':
+      token = strtok(buf+2," ");
+      tmp = atoi(token);
+      token = strtok(NULL," ");
+      resize = atoi(token);
+      m_realloc(command[tmp],resize);
+      break;
+    case 'm':
+    case 's':
+      command[init] = m_malloc(strlen(buf+2)+1);
+      strcpy(command[init++],buf+2);
+      break;
+    default:
+      printf("command error. input f, e, r, m, s\n");
+      return 0;
+    }
+  }
+  print_alloc();
   return 0;
 }
-- 
GitLab