+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Calcolare la Dimensione di una oggetto di una classe

  1. #1
    jackmoros non  in linea Scolaretto
    Salve,
    ho una classe che ha solo attributi a lunghezza fissa, (es string *), vorrei sapere quanti byte occupa in memoria questa classe, per poterla usare nella funzione CopyMemory della dll kernel32 di windows:

    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

    ovviamente sia Destination che Source saranno oggetti della mia classe, ma non so cosa devo passare a length.
    Come posso fare?
    P.S. ho provato facendo la somma della lunghezza di ogni attributo ma non va. Aumentando invece di uno funziona, ma vorrei avere una soluzione un pò meno empirica

    Grazie!

  2. #2
    L'avatar di gibra
    gibra non  in linea Very Important Person
    Spiegati meglio:
    Forse intendi un elemento della classe, non l'intera classe, o sbaglio?
    Una classe può anche avere Metodi ed Eventi.

    Credo che tu debba utilizzare una struttura TYPE/END TYPE in cui dovrai ricreare tanti membri quante sono le proprietà della tua classe.

    Dopo aver valorizzato i membri con le proprietà dell'elemento della classe che vuoi utilizzare, potrai calcolare le dimensioni della tua struttura con Len().
    ℹ️ Leggi di pi su gibra ...

  3. #3
    jackmoros non  in linea Scolaretto
    bè se ho una classe che ha solo attributi a lunghezza fissa mi immagino che tutte le sue istanze occupino la stesso numero di byte in memoria.
    In effetti non so se i suoi metodi (la mia classe non ha eventi) possono contribuire a determinarne la lunghezza...
    Vorrei evitare di usare una struct.
    Ad ogni modo, tornando al mio problema, considerando un oggetto della mia classe (sul quale come sappiamo non è possibile chiamare len), è possibile sapere quanti byte occupa in memoria?
    ad esempio tramite una funzione definita in una qualche libreria di sistema, in modo da poterlo usare nella copy memory?

  4. #4
    Ma, ammesso e non concesso si possa ottenere questa informazione, cosa ci devi fare dopo con la CopyMemory?
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    jackmoros non  in linea Scolaretto
    supponiamo che io voglia copiare il valore di tutti gli attributi dell'oggetto A in quelli dell'oggetto B, immagino che usare la copymemory da A a B sia ESTREMAMENTE più veloce, piuttosto che fare una assegnazione per ogni attributo.

  6. #6
    Ma la CopyMemory lavora per aree contigue di memoria.

    Chi ti assicura che i dati di un oggetto in VB siano allocati in posizioni contigue di memoria?

    Ho l'impressione (dati tutti i tuoi messaggi) che il tuo progetto stia "un po' stretto" al VB6 ... forse sarebbe il caso di fare il porting in C++ ...
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [C++] classe cliente di un'altra classe
    Da Nosba nel forum C/C++
    Risposte: 0
    Ultimo Post: 23-02-2014, 15:09
  2. Risposte: 0
    Ultimo Post: 03-07-2010, 00:29
  3. Risposte: 0
    Ultimo Post: 11-10-2009, 21:00
  4. Oggetto matrice di puntatori a classe astratta
    Da saettadizeus nel forum C/C++
    Risposte: 4
    Ultimo Post: 12-12-2008, 19:30
  5. Calcolare dimensione array dinamico
    Da lucagfc nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 05-07-2006, 10:14