理解堆和栈:
堆由程序员手动申请、手动释放;栈由程序分配,函数结束、自动释放
下面我们使用程序来实现堆:
#include<stdio.h>
#include<string.h>
/*我们定义一个Buf,Pos作为全局变量,来定义我们申请的内存
Buf[0]----------------->Buf[Pos]这一段是我们申请的内存------>Buf[1024]这段是全部的内存
*/
char Buf[1024];
int Pos=0;
void* Mymalloc(int size) {
int oldPos=Pos;
Pos += size;
return &Buf[oldPos];
}//返回void*是因为void*可以转化为任何类型的
int main(void)
{
int i;
char* bufChar = Mymalloc(100);
for (i = 0; i < 26; i++)
bufChar[i] = 'A' + i;//实验现象是在&Buf[oldPos]这个地址开始,我们开始写入值A、B、C.......
return 0;
}