Kezdőoldal » Számítástechnika » Programozás » Ebben hol van a hiba, miért...

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:
63%

Lehet, hogy hülyeséget írok, de nem

free(t);

kellene?

2008. szept. 6. 22:19
Hasznos számodra ez a válasz?
 2/3 anonim válasza:
63%

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.

2008. szept. 7. 13:44
Hasznos számodra ez a válasz?
 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...
2008. okt. 22. 10:43
Hasznos számodra ez a válasz?

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!