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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación C/C++ / Capturar segfault con try/catch en C++ en: 21 Octubre 2016, 01:05 am
 Este hilo lo creo a modo de aclaracion en referencia a otro hilo donde se discutio el mismo tema, en el cual el moderador de turno brindo información no del todo acertada, luego de manera arbitraria procedio a bloquear el hilo sin razon alguna. Lo cual me parecio injusto, ya que cerro la posibilidad de que otro usuario pueda opinar al respecto.

  En lo referente al tema, C++ dispone de una lista de excepciones establecidas que son lanzadas por throw producto de algun error, hay que dejar en claro que try/catch solo puede capturar excepciones lanzadas por throw, por tanto obviamente un segfault, division por cero no son inherentes al C++ estandar, es una situacion que se produce de manera inesperada a nivel hardware, por lo tanto ya es dependiente de cada OS y compilador la manera controlarlos.

Mas info: http://stackoverflow.com/questions/1823721/how-to-catch-the-null-pointer-exception

 Otra cosa es usar alguna extension del compilador para interpretar un segfault como una excepcion de C++ estandar (lo cual no es nada portable) como es el caso de Visual C++:

Citar
Exception Handling Model

You can set an exception handling model for your Visual C++ compiler with /EHs (or EHsc) to specify synchronous exception handling model, or /EHa to specify asynchronous exception handling model. The asynchronous model can be used to force the try{}catch(){} construction to catch both SEH and C++ typed exceptions (the same effect can be achieved with the _set_se_translator() function). If a synchronous model is utilized, SEH exceptions are not caught by the try{}catch(){} construction. Asynchronous model was the default in previous versions of Visual C++, but the synchronous one is the default in the newer versions.

Mas info: http://www.codeproject.com/Articles/207464/Exception-Handling-in-Visual-Cplusplus

https://msdn.microsoft.com/en-us/library/1deeycx5(v=vs.80).aspx

  




2  Programación / Programación C/C++ / Como imprime este programa varios números sin bucles ni recursión en: 15 Septiembre 2015, 22:32 pm
Me he encontrado un codigo en C++ muy extraño, el cual imprime una determinada contidad de numeros uno debajo de otro, hasta ahi todo normal pero lo hace sin usar ningun tipo de bucles ni recursión.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<int N>
  5. class PrintOneToN
  6. {
  7. public:
  8.    static void print()
  9.    {
  10.        PrintOneToN<N-1>::print();  // Note that this is not recursion
  11.        cout << N << endl;
  12.    }
  13. };
  14.  
  15. template<>
  16. class PrintOneToN<1>
  17. {
  18. public:
  19.    static void print()
  20.    {
  21.        cout << 1 << endl;
  22.    }
  23. };
  24. int main()
  25. {
  26.    const int N = 100;
  27.    PrintOneToN<N>::print();
  28.    return 0;
  29. }

Alguien entiendo como funciona este codigo?. Si es asi podria explicarme porfavor ..
3  Foros Generales / Foro Libre / Que pasa si un insecto vuela dentro de un auto que viaja a 100 km/h en: 14 Julio 2015, 01:53 am
Bueno me surgió esta duda hoy al regresar del trabajo, la cuestión seria si un auto viaja a 100 km/h. en el interior hay una mosca suspendida por el aire, no se encuentra sujeta a ninguna parte.

Mi pregunta es: ¿por qué la mosca se mantiene firme en el aire, estando el auto en movimiento? ¿cual es la explicación para esto?. digo esto por experiencia propia, yo iba a alta velocidad y el insecto se desplazaba tranquilamente por el auto.

Saludos

4  Foros Generales / Foro Libre / Posiblemente sera la mejor serie geek producida hasta ahora en: 25 Junio 2015, 20:08 pm
Buenas comunidad

Hoy quiero compartirles una serie la cual me dejo muy enganchado y creo que a muchos de aquí también le gustara. la serie se llama Mr. Robot

Trailer



Primer capitulo

http://www.seriesbang.net/mr-robot-1x01.html

Espero lo disfruten, yo estoy a la espera de los próximos capitulos

Saludos
5  Foros Generales / Foro Libre / Si la ignorancia da la felicidad, ¿es la inteligencia sinónimo de tristeza? en: 22 Abril 2015, 01:14 am
 Seguramente ya han escuchado esto varias veces, por lo que quisiera oír sus puntos de vista al respecto.

 A veces da la sensación de que es mejor no saber para ser felices (ojos que no ven, corazón que no siente, ¿no?) y de que saber demasiadas cosas nos condena a una vida de desgracia y desencanto continuo. Hay gente que incluso evita no saber cosas que le puedan desagradar para no caer en ansiedad o depresión.

 Es por eso que teniendo en cuenta este pensamiento me hago la siguiente pregunta ¿es la inteligencia sinónimo de tristeza? lo digo porque la gente más inteligente se preocupa más por la condición humana o se angustia con la estupidez de los demás, osea vive constantemente preocupado.

Que piensan de esto?
6  Programación / Programación C/C++ / Convertir entero a binario con uniones y campos de bit en: 11 Abril 2015, 23:57 pm
Hola a todos, tengo un inconveniente a la hora de intentar entender el siguiente código

Código
  1. #include <stdio.h>
  2.  
  3. typedef union
  4. {
  5.    int entero;
  6.    struct
  7.    {
  8.        unsigned short : 7;
  9.        unsigned short valor: 1;
  10.    } bin;
  11. } conversor;
  12.  
  13. int main(void)
  14. {
  15.    int numero = 8, i;
  16.    conversor conver;
  17.    conver.entero = numero;
  18.  
  19.    for ( i = 0; i < 8; i++ )
  20.    {
  21.        printf( "%d", conver.bin.valor );
  22.        conver.entero <<= 1;
  23.    }
  24.    printf( "\n" );
  25.  
  26.    return 0;
  27. }
  28.  

Seria alguien tan amable de explicarme como convierte este código un numero entero a binario y también que hace cada miembro de la unión por ejemplo

Código
  1. unsigned short : 7;

Para que sirve esto?
7  Programación / Programación C/C++ / Calcula el cuadrado de un numero usando aritmetica de punteros en: 29 Marzo 2015, 19:29 pm
He encontrado una función algo peculiar la cual calcula el cuadrado de un determinado numero, hasta ahi todo bien pero lo que me llama la atención es el metodo utilizado para llegar a ello.

Código
  1. #include <stdio.h>
  2.  
  3. int p(int n)
  4. {
  5.    int a[n];
  6.    return (&a)[n] - a;
  7. }
  8.  
  9. int main(void)
  10. {
  11.    printf("%d\n", p(8));
  12.    return 0;
  13. }

Como se daran cuenta a simple vista uno no supondría que esto saca el cuadrado de un numero es algo confuso y pido que alguien me explique detalladamente como funciona esto

8  Programación / Programación C/C++ / Comparación de dos cadenas sin usar ningún tipo de bucle en: 15 Marzo 2015, 19:43 pm
Buenas, no estoy seguro si esto ya es conocido o no pero jugando con una implementación de strcmp descubrí que con solo comparar la dirección de inicio de dos cadenas se podía saber si eran iguales o no

Código
  1. #include <stdio.h>
  2.  
  3. int strcmp1(char *s, char *t)
  4. {
  5.    /*for(; *s==*t; s++, t++)
  6.     {
  7.         printf("s = %p, s = %c\n", s, *s);
  8.         printf("t = %p, t = %c\n", t, *t);
  9.  
  10.         if(*s=='\0')
  11.             return 0;
  12.     }*/
  13.    return s - t;
  14. }
  15.  
  16. int main(void)
  17. {
  18.    if(strcmp1("hola", "hola") == 0)
  19.        puts("Igual");
  20.    else
  21.        puts("Desigual");
  22.  
  23.    return 0;
  24. }
  25.  

Según veo con el depurador las direcciones de las cadenas son iguales sin ambas son iguales caso contrario son diferentes. Siendo sincero no entiendo porque pasa esto dos cadenas diferentes no deberían ocupar la misma dirección al mismo tiempo  :huh: ¿Alguien puede explicar que ocurre aquí?
9  Programación / Programación C/C++ / Peculiar función recursiva en: 4 Febrero 2015, 00:04 am
Navegando por internet me encontré un programa el cual no entiendo porque compila en mi caso en CodeBlock, como verán se define una función dentro de otra según tenia entendido esto es ilegal en C por lo cual esto me extraña mucho:

Código
  1. #include <stdio.h>
  2.  
  3. long fib(long x)
  4. {
  5.    long fib_i(long n)
  6.    {
  7.        return n < 2 ? n : fib_i(n - 2) + fib_i(n - 1);
  8.    };
  9.    if (x < 0)
  10.    {
  11.        printf("Bad argument: fib(%ld)\n", x);
  12.        return -1;
  13.    }
  14.    return fib_i(x);
  15. }
  16.  
  17. long fib_i(long n)
  18. {
  19.    printf("This is not the fib you are looking for\n");
  20.    return -1;
  21. }
  22.  
  23. int main()
  24. {
  25.    long x;
  26.    for (x = -1; x < 4; x ++)
  27.        printf("fib %ld = %ld\n", x, fib(x));
  28.  
  29.    printf("calling fib_i from outside fib:\n");
  30.    fib_i(3);
  31.  
  32.    return 0;
  33. }
  34.  

Alguien puede explicar porque funciona esto y como funciona  :huh:
10  Programación / Programación C/C++ / Obtener longitud de un array de enteros en C en: 13 Enero 2015, 14:15 pm
Esto es solo por curiosidad me preguntaba si existe una manera diferente que la convencional:

Código
  1. int n = sizeof(arr) / sizeof(arr[0]);

Para obtener el tamaño de un array de enteros he buscado mucho por internet pero nada al parecer es el único método existente.

Saludos ;D
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines