在C99中,以下这行代码会在栈上创建一个名为ptr的变量,并将其指向堆上的一个内存区域。
int *ptr = (int*)malloc(sizeof(int)*10);
堆和栈的定义在哪里?我在C99语言规范中没有找到它们。
栈和堆是由操作系统、指令集架构或其他什么东西定义的吗?
另一个相关的问题是,C#中的堆栈概念是否与C99中的概念完全相同?由于C#代码在.Net框架上运行,我不确定概念是否与C99相同。
int i = 0; int * pi =&i;
的地址进行比较。您会发现本地变量位于内存的不同区域(堆栈)中,而malloc'd内存位于堆中。 - Galax