Programación General > C/C++

 me da error con una funcion de allegro

(1/1)

Alfonsos1:
si elimino la linea 21 del implementacion.cpp, no me sale error, pero no se cual es el problema con esa linea.

este es el code:

main.cpp

--- Código: C++ ---#include <allegro.h>#include "declaracion.h" int main(){ init();  while(!key[KEY_ESC]) {   dibujar(); }  deinit(); return 0;}END_OF_MAIN() 
implementacion.cpp

--- Código: C++ ---#include <allegro.h> BITMAP *buffer; void init(){ int depth, res; allegro_init(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 600, 600, 0, 0); install_timer(); install_keyboard(); install_mouse(); install_timer();} void deinit() {clear_keybuf();} void dibujar(){ clear_bitmap(buffer);} 
declaracion.h

--- Código: C++ ---void init();void deinit();void dibujar(); 
no es un error de compilacion, sino que cuando se ejecuta el programa me sale error
"proyecto1 ha detectado un error y debe cerrarce"

Radger:
Hola

No se nada sobre allegro por lo que posiblemente que equivoque, pero creo que el problema es que buffer no lo inicializas osea apunta a cualquier sitio por lo que al hacer clear_bitmap(buffer) provoca ese fallo(eso si te refieres a la linea 21, por que pusiste la 31).

Prueba a declarar buffer asi BITMAP buffer y si  clear_bitmap requiere de un puntero pon lo siguiente:


--- Código: C++ ---clear_bitmap(&buffer); 

Alfonsos1:
si, me referia a la linea 21.

crei que en la linea 3 ya habia inicializado la variable buffer.

alguien sabe como corregir esto q me diga porfx

solucionado, puse esta linea despues de la linea 14 del implementacion.cpp
buffer=create_bitmap(SCREEN_W,SCREEN_H);

Geo:
En efecto, la función clear_bitmap espera un puntero a BITMAP, pero al tratar de realizar las operaciones se encontraba con que no había memoria reservada para el puntero que recibió, por ello el error.

Qué bien que lo solucionaste :).

Navegación

[0] Índice de Mensajes

Ir a la versión completa