以下是malloc()的一个非常非常简单的版本,似乎给我分配了一些空间,但是除了没有 free() 并且我不检查我是否已经超出分配的空间这一事实之外,怎么能我检查代码是否正确?
“C”专家会因为哪些明显的错误而扇我耳光?
#include <stdio.h>
#include <unistd.h>
#define MAX_MEMORY 1024 * 1024 * 2 /* 2MB of memory */
void *stack = NULL; /* pointer to available stack */
void * memoryAlloc(size) {
if (stack == NULL)
stack = sbrk(MAX_MEMORY); /* give us system memory */
void *pointer;
pointer = (void *)stack + size; /* we always have space :) */
stack += size; /* move in stack forward as space allocated */
return pointer;
}