PERDIDA INESPERADA DE MEMORIA DINAMICA
Publicado por tom (74 intervenciones) el 22/05/2022 01:12:03
HOLA
TENGO UN PROBLEMA MUY IMPORTANTE PARA MI
TENGO UNA IMPLEMENTACION PROPIA DEL OBJETO STD::VECTOR Y PIERDE SU MEMORIA DINAMICA EN ALGUN MOMENTO QUE DESCONOZCO.
MI TEORIA ES QUE EL OPERADOR DE COPIA O EL DE ASIGNACION LIBERAN LA MEMORIA Y EN ALGUN MOMENTO OTRO PROCESO EXTERNO RESERVA ESE ESPACIO DE MEMORIA Y EXT PUEDE SEGUIR LEYENDO DATOS PERO YA SERIAN DATOS INUTILES.
SEGURAMENTE ES UN TEMA DE SINTAXIS.
AQUI HAY UNA PORCION DE LA CLASE
LA SUBRUTINA FREE() LIBERA LA MEMORIA DINAMICA DE EXTMICA Y ESTABLECE EL TAMAÑO DE EXT A CERO.
AQUI ESTA LA DOCUMENTACION DE SOBRECARGA DE OPERADORES, HONESTAMENTE NO ENTENDÌ NDA ACERCA DE LOS OPERADORES DE COPIA Y DE ASIGNACION.
TENGO UN PROBLEMA MUY IMPORTANTE PARA MI
TENGO UNA IMPLEMENTACION PROPIA DEL OBJETO STD::VECTOR Y PIERDE SU MEMORIA DINAMICA EN ALGUN MOMENTO QUE DESCONOZCO.
MI TEORIA ES QUE EL OPERADOR DE COPIA O EL DE ASIGNACION LIBERAN LA MEMORIA Y EN ALGUN MOMENTO OTRO PROCESO EXTERNO RESERVA ESE ESPACIO DE MEMORIA Y EXT PUEDE SEGUIR LEYENDO DATOS PERO YA SERIAN DATOS INUTILES.
SEGURAMENTE ES UN TEMA DE SINTAXIS.
AQUI HAY UNA PORCION DE LA CLASE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
TEMPLATE <TYPENAME T>
STRUCT EXT{
PRIVATE:
int SIZE;
int CAPACITY;
T* POINTER;
// RESERVE DINAMIC MEMORY FOR NEW EXTENSOR
FRIEND VOID RESERVE(EXT<T> &E, int CAPACITY){
IF(CAPACITY < 0) exit(-1);
E.POINTER = NEW T[CAPACITY];
IF( !E.POINTER ) exit(-1);
}
BOOL IAR; // IS A REFERENCE
PUBLIC:
EXT(){
THIS->SIZE = 0;
THIS->CAPACITY = 0;
RESERVE(*THIS, THIS->CAPACITY);
THIS->IAR = false;
}
EXT(int CAPACITY){
THIS->SIZE = 0;
THIS->CAPACITY = CAPACITY;
RESERVE(*THIS, THIS->CAPACITY);
THIS->IAR = true;
}
~EXT(){
IF( !THIS->IAR )
DELETE[] THIS->POINTER;
}
EXT<T>& OPERATOR=(EXT<T> E){
FREE(*THIS);
COPY(*THIS, E);
RETURN *THIS;
}
AQUI ESTA LA DOCUMENTACION DE SOBRECARGA DE OPERADORES, HONESTAMENTE NO ENTENDÌ NDA ACERCA DE LOS OPERADORES DE COPIA Y DE ASIGNACION.
Valora esta pregunta


0