elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 [126] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 ... 161
1251  Programación / Programación C/C++ / Re: C++ Aerolinea, AYUDA PORFAVOR!!! en: 5 Mayo 2016, 10:05 am
No se hacen tareas. Te podemos ayudar en temas puntuales, la parte donde te hayas estancado, pero no vamos a resolver todo el problema.
Muestra lo que tengas hecho o la parte donde no sabes seguir. Así sí que te podremos ayudar.



Lo digo, más que nada, porqué esto contraviene las reglas del foro y el moderador te puede cerrar el post y así no se te podrá ayudar en nada.
1252  Programación / Programación C/C++ / Re: ¿Que es más eficiente, utilizar array o memoria dinámica? [C] en: 5 Mayo 2016, 07:00 am
Moverse en la pila local es restar un literal a base pointer, un acceso al montón es cargar la dirección de memoria y despues hay que calcular el offset.



Dos programas que hacen casi lo mismo. El primero crea un array normal, en la pila; el segundo lo crea en el motón mediante malloc.
Código en C del array en pila:
Código
  1. #include <stdio.h>
  2.  
  3. int main( void ){
  4.    int array[5];
  5.  
  6.    array[3] = 3;    
  7.    printf("%i", array[3]);
  8.  
  9.    return 0;
  10. }

Código en C del array en el montón:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main( void ){
  5.    int *array = malloc(sizeof(int) * 5);
  6.  
  7.    array[3] = 3;    
  8.    printf("%i", array[3]);
  9.  
  10.    return 0;
  11. }

Código ensamblador generado, sin optimización y en sintaxis INTEL, por GCC para el array en la pila:
Código
  1. .file "c.c"
  2. .intel_syntax noprefix
  3. .section .rodata
  4. .LC0:
  5. .string "%i"
  6. .text
  7. .globl main
  8. .type main, @function
  9. main:
  10. .LFB0:
  11. .cfi_startproc
  12. push rbp
  13. .cfi_def_cfa_offset 16
  14. .cfi_offset 6, -16
  15. mov rbp, rsp
  16. .cfi_def_cfa_register 6
  17. sub rsp, 32
  18. mov DWORD PTR [rbp-20], 3
  19. mov eax, DWORD PTR [rbp-20]
  20. mov esi, eax
  21. mov edi, OFFSET FLAT:.LC0
  22. mov eax, 0
  23. call printf
  24. mov eax, 0
  25. leave
  26. .cfi_def_cfa 7, 8
  27. ret
  28. .cfi_endproc
  29. .LFE0:
  30. .size main, .-main
  31. .ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4"
  32. .section .note.GNU-stack,"",@progbits

Código ensamblador generado, sin optimización y en sintaxis INTEL, por GCC para el array en el montón:
Código
  1. .file "d.c"
  2. .intel_syntax noprefix
  3. .section .rodata
  4. .LC0:
  5. .string "%i"
  6. .text
  7. .globl main
  8. .type main, @function
  9. main:
  10. .LFB2:
  11. .cfi_startproc
  12. push rbp
  13. .cfi_def_cfa_offset 16
  14. .cfi_offset 6, -16
  15. mov rbp, rsp
  16. .cfi_def_cfa_register 6
  17. sub rsp, 16
  18. mov edi, 20
  19. call malloc
  20. mov QWORD PTR [rbp-8], rax
  21. mov rax, QWORD PTR [rbp-8]
  22. add rax, 12
  23. mov DWORD PTR [rax], 3
  24. mov rax, QWORD PTR [rbp-8]
  25. add rax, 12
  26. mov eax, DWORD PTR [rax]
  27. mov esi, eax
  28. mov edi, OFFSET FLAT:.LC0
  29. mov eax, 0
  30. call printf
  31. mov eax, 0
  32. leave
  33. .cfi_def_cfa 7, 8
  34. ret
  35. .cfi_endproc
  36. .LFE2:
  37. .size main, .-main
  38. .ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4"
  39. .section .note.GNU-stack,"",@progbits

Como se puede ver la escritura y la lectura en el montón, mediante puntero necesita de muchas más instrucciones que el acceso a un elemento el array.
1253  Programación / Programación C/C++ / Re: asombrado, admirado, sorprendido, pasmado, maravillado, impresionado, alucinado. en: 4 Mayo 2016, 20:54 pm
Los arrays y las tablas són siempre más eficientes, pues son datos que se guardan en la pila y el código que se genera para acceder a ellos es más rápido que acceder el montón. Por otra parte la memoria de la pila es bastante más limitada, en tamaño que la del montón y para un gran número de elementos te podrías quedar sin pila de programa rápidamente.
También está el tema de pasar arrays a funciones como argumentos: como es un puntero se pierde totalmente la ventaja de un array propio ya que hay que tratarlo como si estuviera en el montón.
Por último la función realloc es una de las más lentas pues debe acceder al montón, comprobar si hay memoria suficiente para la nueva asignación,  copiar todos los datos que le son posible a la nueva asignación y liberar la memoria del puntero original.
1254  Programación / Programación C/C++ / Re: Liberar memoria de 2 punteros apuntando a la misma dirección(malloc/realloc/free en: 4 Mayo 2016, 14:41 pm
Correcto.
1255  Programación / Programación C/C++ / Re: C vs C++ [Civil War] en: 4 Mayo 2016, 01:00 am
Sí, la POO y los genéricos quitan mucha carga al programador y tal, pero la sintaxys de C++ me sigue preciendo muy engorrosa. Hace años microsoft tenía un proyecto de un C# que compilaba directamente a código nativo. Desconozco si ha tenido continuidad, pero es una lástima que no se haya hechi de dominio público. Me gustaba mucho C# y podría haberse convertido en el lenguaje de mi preferencia. No hubo suerte.
1256  Programación / Programación C/C++ / Re: C vs C++ [Civil War] en: 4 Mayo 2016, 00:00 am
Yo soy de C. Allá por el 2005 - 2008 estuve tocando C# y me gustaba como lenguaje POO. Lo he intentado con otros lenguajes pero me siento incómodo por la falta de expresividad y control que obtengo con C. Y considero C++ un lenguaje muy sucio, hecho de parche, sobre parche, sobre parche.

En cuánto al estilo de código, siempre que éste sea coherente, claro y agradable a la vista, no tengo objeción.
1257  Programación / Programación C/C++ / Re: Liberar memoria de 2 punteros apuntando a la misma dirección(malloc/realloc/free en: 3 Mayo 2016, 21:54 pm
En este caso, cuándo haces realloc, string1 deja de tener memoria asignada. Hay que verlo como si realloc hiciera internamente un free al puntero que se le pasa. El que veas string1 después del realloc es porqué los datos persisten en la memoria (no se pone a 0), aunque hay que recordar que el sistema ya no la tiene en cuenta por tanto en cualquier momento se puede reescribir.
1258  Programación / Programación General / Re: Puzzle Algoritmico de Matrices quien me ayuda a ver como puedo resolverlo? en: 3 Mayo 2016, 19:55 pm
Y la clave de descifrado es?
1259  Programación / Programación C/C++ / Re: Dibujar cuatro triangulos de asteriscos en: 2 Mayo 2016, 22:05 pm
Bueno, vamos a hacer una cosa. Empieza poniendo el código que sepas y vamos montando el programa a partir de aquí.
1260  Programación / Programación C/C++ / Re: Dibujar cuatro triangulos de asteriscos en: 2 Mayo 2016, 21:50 pm
Ahora le puedes explicar el porqué de cada línea del programa.
Páginas: 1 ... 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 [126] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines