Ir para conteúdo
Fórum Script Brasil
  • 0

Que mensagem é essa que está na memória


bruce845

Pergunta

Existe um endereço que sempre contém uma string que aparece uma mensagem. Rodem o programa abaixo e vejam:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // Biblioteca para a função getch().
#define MAX_NOME 30
// ((const char *)0x40004E)

int main(int argc,char **argv)
{
puts((const char *)0x40004E);
getch();
return EXIT_SUCCESS;
}
[/codebox]

O endereço de memória 0x40004E contém um vetor de caracteres (string) e é constante (tentei alterar o seu conteúdo e dá pau!)

Porque nesse endereço de memória sempre está essa mensagem? O que ela siginifica?

Editado por bruce845
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Quando o compilador vai montar o executável, ele cria um cabeçalho de execução, para o S.O. saber iniciá-lo.

Esse endereço de memória aponta para uma área do cabeçalho onde contém essa string.

A parte do cabeçalho que contem essa string, parece que é pra manter compatibilidade com o sistema DOS. Se for tentar rodar esse programa no DOS, aparecerá essa mensagem.

Além disso, essa área de memória realmente não pode ser alterada, pois está armazenada na memória estática. Se permitisse, estaria alterando o próprio arquivo binário (executável).

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...