Article View: es.comp.os.linux.programacion
Article #7343Re: strcat() en c++
From: Michael
Date: Sun, 09 Mar 2003 21:10
Date: Sun, 09 Mar 2003 21:10
43 lines
3042 bytes
3042 bytes
Hi, El programa que has pegado tiene varios errores: -------------------8<---------8<------------------ > cad1=(char*)malloc(20*sizeof(char*)); > cad2=(char*)malloc(20*sizeof(char*)); Estas dos lineas deberian ser (sobra el *) cad1=(char*)malloc(20*sizeof(char)); cad2=(char*)malloc(20*sizeof(char)); -------------------8<---------8<------------------ > cad1=""; Esto no se puede hacer, has hecho que cad1 apunte a una cadena vacia, has perdido la referencia a la memoria que pediste con malloc mas arriba. Tendria que ser algo asi: *cad1= (char)0; "o" cad1[0]= (char)0; "o" cad1[0]= '\0'; > strcat(cad1,cad2); //aparentemente es en esta l�ne Strcat no redimensiona la zona de memoria a la que apunta cad1 para a�adirle la cadena de cad2, debes asegurarte antes de hacer el strcat de que cad1 apunta a una zona de memoria suficientemente grande para que quepa el contenido de cad1 mas el contenido de cad2. Como cad1 apunta a una zona de 20*4 bytes, si cad1+cad2 ocupa mas de 20*4 bytes te dara un error de violacion. En tu ejemplo original ni siquiera eso ya que debido a la linea cad1=""; cad1 ni siquiera apunta a la zona de 20*4 caracteres de memoria reservada con malloc , sino que apunta a una zona de memoria en la que solo cabe un caracter. > Pero falta todav�a lo mejor y mas contradictorio que jamas he visto!!!! > basta que establezca alg�n punto de interrupci�n en cualquier parte del > c�digo, donde mas me de la gana y el bendito programa funciona!!!!!, qu� > creen que est� mal, como puedo arreglarlo????? El problema es que el programa esta escribiendo en zonas de memoria en las que no caben los datos luego segun en que zona sobreescriba puede dar el error o no (depende de que lo que machaque en ese momento sea necesario para el funcionamiento del programa). Salud2 !!!!
Technical Details
Message-ID:
<b4g7fc$gg9$1@nsnmrro2-gest.nuria.telefonica-data.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!easynet-quince!easynet.net!bashful.rediris.es!nsnmrro1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!not-for-mailReferences:
<b453rv$6ma$1@julieta.escomposlinux.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,aff69d8b36562df0 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-03-09 12:16:46 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!easynet-quince!easynet.net!bashful.rediris.es!nsnmrro1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!not-for-mail From: Michael <michaell@teleline.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: strcat() en c++ Date: Sun, 09 Mar 2003 21:10:34 +0000 Organization: Michael Corp Lines: 44 Message-ID: <b4g7fc$gg9$1@nsnmrro2-gest.nuria.telefonica-data.net> References: <b453rv$6ma$1@julieta.escomposlinux.org> NNTP-Posting-Host: 213-98-127-85.uc.nombres.ttd.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8Bit X-Trace: nsnmrro2-gest.nuria.telefonica-data.net 1047241004 16905 213.98.127.85 (9 Mar 2003 20:16:44 GMT) X-Complaints-To: usenet@nsnmrro2-gest.nuria.telefonica-data.net NNTP-Posting-Date: Sun, 9 Mar 2003 20:16:44 +0000 (UTC) User-Agent: KNode/0.7.1