Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por pobrecito hablador el Lunes, 20 Julio de 2009, 16:23h (#1160943)
    Repetimos, sin desreferenciar un puntero nulo. int_handler es un puntero nulo y lo estás desreferenciando.

    Un puntero nulo, según el estándar, es:

    [#3] An integer constant expression with the value 0, or such an expression cast to type void * is called a null pointer constant.
    Evidentemente INTERRUPCION_CUYO_NOMBRE_ME_LA_SUDA es una expresión constante entera de valor 0 (y quita la h del final, por favor).

    Quizás confundes puntero nulo con puntero al que le asignas NULL. En realidad NULL debe ser lo mismo (salvo quizás un cast) que tu INTERRUPCION_CUYO_NOMBRE_ME_LA_SUDA

    The macro NULL is defined in as a null pointer constant;

    El estándar también dice:

    Among the invalid values for dereferencing a pointer by the unary * operator are a null pointer, [...]
    Invalido indica que un compilador conforme al estándar lo debería impedir/dar un error cuando lo intentas.

    Otra regla más que viene al caso por la noticia:

    [#9] An address constant is a null pointer, [...].

    [The] -> operators [...] may be used in the creation of an address constant, but the value of an object shall not be accessed by use of these operators.

    Así que el operador -> no debe hace una desreferenca como puede ser "*(int *0) = valor". De hecho "&((struct {int a;} *)0)->a" se lo debería tragar sin pestañear.
    [ Padre ]
  • 1 respuesta por debajo de tu umbral de lectura actual.