Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

ponteiro suporta mais q o alocado, como?

Recommended Posts

como que pode isso, se to alocando 5 letras, posso por a qtd q eu quiser ali q funciona igual?

 

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

int main()
{
	char *p;

	p = (char*)malloc(5);
	strcpy(p,"DEMONIO DO INFERNO");
	printf("%s\n",p);

	p = (char*)realloc(p,25);
	strcpy(p,"VAI TOMAR NO **");
	printf("%s\n",p);

	free(p);

	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
BUGS

If the destination string of a strcpy() is not large enough (that is, if the programmer was stupid or lazy, and

failed to check the size before copying) then anything might happen. Overflowing fixed length strings is a

favorite cracker technique.

 

http://www.htsoft.com/resources/articles/techtip_buffer.php

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
  char *p=(char*)malloc(5);
  char s[10];
  strcpy(p,"MAIS DO QUE CINCO");
  for(int i=0;i<=sizeof(p)*4;i++)
	printf("%c\n",p[i]);
}

 

Tente dar um free em P. Não sei no teu ambiente mas aqui da erro na libc

Compartilhar este post


Link para o post
Compartilhar em outros sites

da erro "debug library", que maravilha ein, por isso dizem que C é tão bom, você tem que fazer tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que não é preguiça e sim ter q fazer tudo na mão coisas que são facilmente são feitas por outras linguagens...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente: preguiça. Já vi o namorado...A gente tem que escrever um código com sincronização entre processos e passagem de dados via pipe e outras coisas. Ele tá tão viciado em Python e C# que não tá sabendo nem ler C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.