1. 程式人生 > >程式設計正規化,4/11/18

程式設計正規化,4/11/18

1: 有關棧清除的更新

typedef struct{
            void* elems;
            int elemSize;
            int loglength;
            int alloclength;
            void(*freefn) (void*);
            }stack;
 StackNew(stack*s, int elemSize, void* freefn(void*);
 StackDispose(stack* s)
 {
 	if(s->freefn !=NULL)
 	{
 	for (int i=0;i< s->loglength;i++){
 	s->freefn((char*) s->elems +i * s->elemSize);}
 	}
   free(s->elems);
  };
  例項:
  stack StringStack;
  StackNew(&StringStack, sizeof( char* ), StringFree);
  void StringFree( void *elem);
  {
  		free( * (char **) elem);
  }

2:memcpy函式對於記憶體重疊區域進行操作時,會出現覆蓋的不可估計後果,此時需要用memove來實現; 3: 有關記憶體管理的部分:一塊RAM,當中的Stack 和Heap 部分的處理;Stack部分有硬體進行管理,而heap 部分則需要進行軟體管理。 這裡會講到幾個記憶體函式: malloc 函式 realloc 函式 free 函式