Alguém pode sugerir, como podemos encontrar o endereço mais alto e mais baixo da pilha usando C?
Respostas:
5 para resposta № 1Em um sistema Linux, você pode usar sbrk () com um 0argumento para encontrar um fim. Você pode encontrar a outra extremidade compreendendo o segmento do carregador de programas solicitando e examinando etext e edata - consulte a página de manual end (3).
Tudo isso não é padrão e está fora do escopo do próprio C.
2 para resposta № 2
Você pode encerrar suas chamadas para malloc
para acompanhar o endereço mais alto e mais baixo visto até agora em cada chamada:
extern unsigned char *lowest, *highest;
unsigned char *tmp = malloc(size);
if (!tmp) return 0;
if (!lowest || tmp < lowest) lowest = tmp;
if (tmp+size > highest) highest = tmp;
return tmp;
1 para resposta № 3
A resposta é que você não pode entrar em C. Se você verificar o padrão do idioma, perceberá que o conceito nunca é mencionado.
O heap é um detalhe de implementação usado em alguns ambientes operacionais (quase todos eles).