Jump to content
Fórum Script Brasil
  • 0

Que mensagem é essa que está na memória


bruce845

Question

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?

Edited by bruce845
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...