Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: mmxngg - Febbraio 16, 2012, 01:42:17 pm
-
Ciao a tutti :)
Provo l'avventura Lazarus perchè mi serviva un ambiente gratuito che non utilizzasse le librerie .NET e devo dire che mi piace se non fosse per quel migliaio di bug che ha...diciamo che promette bene ma è ancora immaturo. Cmq...sono registrato anche sul sito internazionale e mi hanno già cazziato visto che segnalavo le anomalie sul forum (non conoscendo l'esistenza del bugreport...vabbè) quindi prima di farmi cazziare di nuovo provo di qua. Trattatemi bene ;D
Che voi sappiate lazarus o il free pascal utilizzano un sistema particolare per la gestione dell'heap ? Ho la necessità di interfacciarmi ad una dll e condividerne la memoria e se la risposta è si prevedo noie.
-
Esattamente cosa devi fare?! Perchè se c'è la possibilità di usare delle funzioni native del Free Pascal ti risparmi la noia di usare una DLL
Comunque benvenuto tra noi! ;)
-
L'idea è riassunta nel post di benvenuto....che naturalmente ho scritto dopo questo ::)
Direi che è da escludere l'utilizzo del pascal...troppo lento per lo scopo. In pratica devo passare 2 aree di memoria alla DLL, la prima in input (e fin qui nessun problema), la seconda è in output e verrà riempita con un elenco di puntatori allocati dalla DLL. Ora...se non c'è un utilizzo strambo dell'heap non ci son problemi altrimenti al ritorno sicuramente crasha tutto e devo trovare una soluzione alternativa ;D
-
Quindi se non ho capito male il tuo problema è ottenere il dato di output attraverso la dll! Giusto?!
-
Tutto quello che c'è da sapere sulla gestione dell'heap è qui:
http://www.freepascal.org/docs-html/prog/progse33.html
Se la gestione dell'heap di freepascal non si adatta a quello che devi fare, c'è la possibilità di scriversi il proprio memory manager e di farlo utilizzare dal compilatore :)
-
Perfetto...cioè...quasi...ha una gestione proprietaria :/
Grazie per l'info, io l'avrei trovata fra 200 anni.
-
Quindi se non ho capito male il tuo problema è ottenere il dato di output attraverso la dll! Giusto?!
Ops, non mi ero accorto della tua risposta.
Esatto, ottenere l'output dalla DLL anche se il vero problema non è tanto quello quanto il fatto che la DLL alloca di suo all'interno dell'heap e quindi farà impazzire la gestione del free pascal.