程式設計正規化,4/11/18
阿新 • • 發佈:2018-12-19
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 函式