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

Problema com Ponteiros - Windows


fluciamat

Pergunta

Olá pessoal, essa é minha primeira vez por aqui e gostaria de pedir uma ajuda para vocês. Estou fazendo um código super simples, quando eu compilo não dá erro, mas quando eu executo acusa "O teste.exe encontrou um problema e precisa ser fechado." Estou usando o Windows XP e o Code Blocks. Segue o código:

#include <iostream>

int main()
{
int* a;
int b=2;
*a=b;
}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

quando a é declarado, ele é alocado numa posicao qualquer na memoria. você não sabe q dados existiam nessa posicao, pode ser qualquer coisa.

entretanto sabemos que tem um valor, provavelmente, sujeira deixada pelo programa q usou esse espaco de memoria anteriormente.

se imaginarmos então, q depois de ser declarado, a possui um valor X, e considerando que a é um tipo ponteiro, sabemos que ele aponta pra a posicao X de memoria.

e você não sabe onde fica essa posicao X. essa posicao pode já estar em uso por algum outro programa ou pelo sistema operacional.

quando você faz isso:

*a = b;

você esta dizendo para o programa copiar o valor de b na posicao X da memoria.

mas se outro processo já esta utilizando essa posicao, o seu programa simplesmente não vai ter permissao. o windows é um sistema operacional protegido, um processo não pode interferir na regiao da memoria que esta sendo utilizada por outro processo (ate pode, mas usando funcoes proprias pra isso. seria como "pedir permissao" ao sistema operacional).

em resumo, o "problema que o windows encontrou" foi a tentativa do teste.exe de acessar (e o pior, de tentar alterar) uma regiao de memoria q esta sendo usada por outro processo.

e como ele não permite isso, fecha o teste.exe.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Kuroi, novamente obrigada, mas continuo com problemas com ponteiros. Dê só uma olhada nesse código simples

#include <iostream>

#include <vector>

int main()

{

for (unsigned int v=0; v < 3; v++)

{

std::vector<int*> again1;

again1[v]=new int;

std::vector<int*> again2;

again2[v]=NULL;

std::cout << (again1).size() << std::endl;

std::cout << (again2).size() << std::endl;

}

}

Quando eu compilo obtenho "O teste.exe encontrou um problema e precisa ser fechado."

O que está errado?

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Kuroi, novamente obrigada, mas continuo com problemas com ponteiros. Dê só uma olhada nesse código simples

#include <iostream>

#include <vector>

int main()

{

for (unsigned int v=0; v < 3; v++)

{

std::vector<int*> again1;

again1[v]=new int;

std::vector<int*> again2;

again2[v]=NULL;

std::cout << (again1).size() << std::endl;

std::cout << (again2).size() << std::endl;

}

}

Quando eu compilo obtenho "O teste.exe encontrou um problema e precisa ser fechado."

O que está errado?

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...