堆地址减少,增加

问题描述 投票:0回答:1

为什么堆在某个级别之后增加然后减少,然后又增加?In linux os

当我学习操作系统和内存结构时,我发现一些奇怪的地址增加了...

程序很简单,只是递归调用堆栈和堆而已。

void recursive(int count){
long stack;
long* heap;

heap = (long*)malloc(sizeof(long)*100000000000);


        heap = (long*)malloc(sizeof(long)*100000);
        if((long*)heap >= (long*)&stack){
            printf("heap is contact with stack\n");
            exit(1);
        }


printf("%diteration \\ heap : %p || stack : %p\n",count, heap, &stack);
recursive(++count);

}

c linux heap-memory
1个回答
0
投票

您的heap指针未指向堆的顶部。它指向分配的内存块,该内存块可以在任何地方。最接近您要查找的是中断指针,可以通过调用sbrk(0)来找到它。请注意,在现代系统中,不一定有连续的堆。以下是详细说明:What does the brk() system call do?

© www.soinside.com 2019 - 2024. All rights reserved.