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 函数