<br><br><div class="gmail_quote">2009/6/20 Programante <span dir="ltr"><<a href="mailto:programante@gmail.com">programante@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Pedro Rodríguez González escribió:<br>
<div><div></div><div class="h5">>  Hola q tal! Bueno yo de la lista soy el menos hablador, y creo que es<br>
> hora de preguntar a los "masters", aunque mi duda va dirigida a todos<br>
> los miembros y/ miembras/ :) . Resulta que un chaval necesita realizar<br>
> un ejercicio de desbordamiento del "*montón*", para ello usó un<br>
> sencillo programa en C que toma un argumento de la línea de comando<br>
> (cadena) y la copia, mediante un *strcpy* a un puntero que tiene<br>
> asignada unos cuantos bytes, mediante un *malloc*. El tema es que por<br>
> muy larga que sea la cadena no se produce ningún error de segmentación<br>
> ni nada por el estilo, aún superando con creces el puntero destino.<br>
> Desconozco cómo funciona internamente un *strcpy* por lo que deduzco<br>
> que ésta función posiblemente realiza algún arreglo moficando<br>
> dinamicamente el tamaño del puntero destino. ¿ Alguien puede aclararme<br>
> algo más ? Muchas gracias por adelantado y saludos nuevamente.<br>
><br>
> Pedro<br>
<br>
</div></div>No. strcpy() no hace nada de todo eso.<br>
<br>
Es una función de lo más simple. Una forma de implementarla sería:<br>
<br>
|char *strcpy(char *restrict /s1/, const char *restrict /s2/) {<br>
    int i;<br>
    for (i=0; ||s1[i] = s2[i];|| i++);<br>
    return s1;<br>
}<br>
</blockquote><div><br>Otra sería:<br><br>void strcpy(char *s, char *t){<br>    while(*s++ = *t++)<br>       ;<br>}<br><br>Del libro, El lenguaje de Programación C, autor: Kernighan y Ritchie.</div></div><br>