m programa usa diferentes regiões da memória para objetos estáticos, automáticos e objetos alocados dinamicament

Estou seguindo o livro "C Primer Plus" e encontre um problema para entender as regiões da memória. No livro, ele afirma:

Normalmente, um programa usa diferentes regiões da memória para objetos estáticos, automáticos e objetos alocados dinamicamente. A Listagem 12.15 ilustra esse ponto.

// where.c -- where's the memory?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int static_store = 30;
const char * pcg = "String Literal";
int main(void)
{
    int auto_store = 40;
    char auto_string[] = "Auto char Array";
    int *pi;
    char *pcl;

    pi = (int *) malloc(sizeof(int));
    *pi = 35;
    pcl = (char *) malloc(strlen("Dynamic String") + 1);
    strcpy(pcl, "Dynamic String");

    printf("static_store: %d at %p\n", static_store, &static_store);
    printf("  auto_store: %d at %p\n", auto_store, &auto_store);
    printf("         *pi: %d at %p\n", *pi, pi);
    printf("  %s at %p\n", pcg, pcg);
    printf(" %s at %p\n", auto_string, auto_string);
    printf("  %s at %p\n", pcl, pcl);
    printf("   %s at %p\n", "Quoted String", "Quoted String");
    free(pi);
    free(pcl);

    return 0;
}

Execute o código e obtenha:

static_store: 30 at 0x10a621040
  auto_store: 40 at 0x7ffee55df768
         *pi: 35 at 0x7fbf1d402ac0
  String Literal at 0x10a620f00
 Auto char Array at 0x7ffee55df770
  Dynamic String at 0x7fbf1d402ad0
   Quoted String at 0x10a620f9b

conclusão do livro:

Como você pode ver, dados estáticos, incluindo literais de seqüência de caracteres, ocupam uma região, dados automáticos em uma segunda região e dados alocados dinamicamente em uma terceira região (geralmente chamada de pilha de memória ou armazenamento gratuito

Eu poderia descobrir que eles são de endereços diferentes. Como posso garantir que eles são de diferentes regiões?

questionAnswers(4)

yourAnswerToTheQuestion