Ebben hol van a hiba, miért ír ki rá heap errort? a classban ezek vannak: void* mem; unsigned int size;
Figyelt kérdés
void main(){
ktMemAllocator *t=new ktMemAllocator;//ebben csak "reset" van
t->putData("test");
t->free();//a hiba ebben van
_CrtDumpMemoryLeaks();}
void ktMemAllocator::create(unsigned int _size) {
mem=new char[(size=_size)];
clear();
}
void ktMemAllocator::clear() {
if(mem)
memset(mem,0,size);
}
void ktMemAllocator::putData(const void* _dat) {
if(size==0){
create(strlen( (char*)_dat));
}
if(strlen((char*)_dat)<=size){
strcpy((char*)mem,(char*)_dat);
}
else{
MessageBox(0,"mem error","error",0);
}
}
void ktMemAllocator::free() {
delete []mem;
}
2008. szept. 6. 20:28
1/3 anonim válasza:
Lehet, hogy hülyeséget írok, de nem
free(t);
kellene?
2/3 anonim válasza:
hát ha c-ben írc progit akkor igen free.
de c++ ban new/delete páros
míg c ben (m)(c)alloc/free
de megprobáltam hátha, de ez se jött be.
3/3 anonim válasza:
A create függvényt hívd meg a free előtt, meg a free-ben nem ártana ellenőrizni h. a mem != NULL, egyébként ha a free-t átalakítanád destruktorrá a create-et meg konstruktorrá jobban járnál...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!