Título: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 18:41 pm Hola chicos :-[..
Usando malloc como seria para usar el valor de la longitud de mi vector? me explico con new era algo asi:float *vec=new float[l]; // donde l era la longitud que el usuario indico en el programa... bien con malloc viendo su estructura en google seria lo siguiente: float *vec = malloc(sizeof(float));//como hago para indicar la longitud del vector? Y en cadenas me podeis decir porfavor algun ejemplo de cadenas y como reservar memoria con malloc?..que reciba la cadena en el main y luego trabaje con el contenido de ella en una funcion por referencia usando punteros.. Muxisisimas gracias de antemano Título: Re: Malloc ... Publicado por: leogtz en 5 Mayo 2010, 18:50 pm Código: float *vector = malloc(sizeof(float) * n); Siendo n la cantidad de elementos del vector. Título: Re: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 19:04 pm Hola Leo gracias por el code,veras lo probe en mi programa :
Código Al compilar me salen 2 errores y son ambos en las lineas del malloc.. Código
Título: Re: Malloc ... Publicado por: leogtz en 5 Mayo 2010, 19:08 pm Debe de ser "int main()", no "void main", cualquier compilador decente te avisaría del fallo.
Corregí esto y tu código me va bien, mira: Código: leo@lein:~/Escritorio$ ./code Título: Re: Malloc ... Publicado por: cgvwzq en 5 Mayo 2010, 19:10 pm También puedes usar calloc (inicializa todo a cero):
Código nelem - numero de elementos elsize - tamaño de cada elemeno Y para evitar warnings, convierte el valor devuelto por las funciones a un puntero de tu tipo, en este caso float: Código Título: Re: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 19:27 pm Hola chicos,gracias por responder ;-),
leo no se porque pero poniendo el main como int main(){ y al final del main el return 0; me seguia dando los 2 errores que comente anteriormente. Pero modificando mis malloc's como indico cgvwzq desaparecieron los errores :o las lineas quedaron asi: float *vec=(float *)(malloc(sizeof(float)*l)); float *vec2=(float *)(malloc(sizeof(float)*l)); comparando con new ,new es mucho mas simple :D chicos y si en lugar de un float mi vector es de letras es decir un char? seria asi? char *cad=(char *)(malloc(sizeof(char)*longi)); en resumen siempre se sigue la misma estructura en malloc? no tiene nada que ver que mi longi sea de tipo int no? Título: Re: Malloc ... Publicado por: leogtz en 5 Mayo 2010, 19:41 pm He leído que en C no es necesario convertir un "void *" al tipo correcto.
Por lo que me extraña de tu compilador. ¿Qué compilador usas? Título: Re: Malloc ... Publicado por: biribau en 5 Mayo 2010, 19:45 pm chicos y si en lugar de un float mi vector es de letras es decir un char? seria asi? char *cad=(char *)(malloc(sizeof(char)*longi)); en resumen siempre se sigue la misma estructura en malloc? no tiene nada que ver que mi longi sea de tipo int no? Es porque malloc es genérico: devuelve void * y reserva bytes por eso necesitamos saber cuantos bytes ocupa nuestro tipo y multiplicarlo El free se hace sin nada especial He leído que en C no es necesario convertir un "void *" al tipo correcto. En C++ creo que sí es obligatorio, pues tiene chequeo más fuerte de tipos(en tiempo de compilación)Por lo que me extraña de tu compilador. ¿Qué compilador usas? Título: Re: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 19:46 pm veras en el curro nos quitaron a todos permiso de administrador por ello no me pude instalar ningun compilador,.
lo unico uso uno portable el turbo C++,como no hace falta instalacion me lo llevo en un pen y listo.. Título: Re: Malloc ... Publicado por: leogtz en 5 Mayo 2010, 19:48 pm Ah, con razón.
Consíguete otro compilador o vas a seguir teniendo problemas como este. Título: Re: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 19:55 pm gracias,por los consejos,seguire en la busqueda de algun otro compilador portable pero de momento seguire con este ,de todas maneras se aprende un pelin de c++ :xD
como lo que dijo biribau c++ es mas tiquismikis como se dice :laugh: muchisicmas gracias biri y Leo.Salu2 desde Madrid =) Título: Re: Malloc ... Publicado por: biribau en 5 Mayo 2010, 19:57 pm Puedes seguir usándolo, pero ten en cuenta que en C++ cambia principalmente eso. Aunque es más una ayuda sobretodo para una principiante. (Aunque los cast implícitos siguen ahí)
Creo que de MinGW hay una versión portable, incluye el compilador de gcc para windows Título: Re: Malloc ... Publicado por: Akai en 5 Mayo 2010, 20:17 pm Codeblocks, creo que se puede hacer portable siguiendo los pasos de este FaQ
http://wiki.codeblocks.org/index.php?title=FAQ#Q:_How_do_I_make_Code::Blocks_portable.3F extraído del propio FaQ: Q: What compiler can I use with Code::Blocks? A: Code::Blocks philosophy is to be able to use any compiler on earth! Well, almost. As a matter of fact it largely depends on the used compiler plugin. Some provided with the default Code::Blocks installation are GNU GCC (MinGW/Cygwin), MS Visual C++ Free Toolkit 2003, Borland's C++ Compiler 5.5, DigitalMars Free Compiler., OpenWatcom, Small Device C Compiler (SDCC) and others. Título: Re: Malloc ... Publicado por: roser24 en 5 Mayo 2010, 21:03 pm hola,entre al link me lo descargue "CbLauncher v0.1.1"y ejecute uno de los ficheros que menciona pero hay otro que dice que tmb tengo que ejecutar pero no lo encuentro en la pagina para descargarmelo ,el que me falta es el del enlace
http://files.filefront.com/Portable+CB+5526+bin7z/;13582845;/fileinfo.html,sale como no encontrado en la web a la que redirecciona.. :( Título: Re: Malloc ... Publicado por: Akai en 5 Mayo 2010, 21:15 pm http://biplab.in/2009/04/creating-portable-codeblocks-part-2/
en los comentarios comentan una solución para el link faltante: Citar Unfortunately the file has been deleted from FileFront due to some unknown reason. But you can actually use any latest nightly version as a portable version. To do that- 1) Download cblauncher_v_0_1_1.7z file from the above post. 2) Download any newer nightly build of Code::Blocks and extract to any folder. 3) Extract cblauncher.exe from cblauncher_v_0_1_1.7z to the folder where codeblocks.exe file is present. 4) Double-click on cblauncher.exe file and it will run the nightly build as a portable version. PERO: parece que alguien se tomó la molestia de preparar un instalador para portable http://codecutter.net/tools/codeblocks.edu/ |