Newsgroup: it.comp.lang.c++
Titolo: C++ Builder Header *********************

Non so se vi siete gia' accorti che il C++ Builder (sia 1.0 che 3.0)
all'inizio di ogni file eseguibile che viene generato riempie un certo
numero di byte con DATI CASUALI!!!
In sostanza da una compilazione all'altra (anche senza apportare modifiche)
i primi byte (quelli che vanno da poco dopo la signature MZ alla signature
PE) sono riempiti a caso e quel che e' peggio mi e' capitato a volte di
trovare pezzi di documenti scritti con word che avevo precedentemente
caricato in memoria.
Molto probabilmente si tratta di una mancata "pulizia" da parte del
compilatore di alcuni buffer.
Ne sapete qualcosa di piu?
ciao

Un bel di' Andrea Baudracco scrisse:
AB> Non so se vi siete gia' accorti che il C++ Builder (sia 1.0 che 3.0)
AB> all'inizio di ogni file eseguibile che viene generato riempie un certo
AB> numero di byte con DATI CASUALI!!!
AB> 
Di quello che ti dico non sono certo al 100%... comunque:
un file exe non contiene solamente delle istruzioni in linguaggio macchina,
come i .com: contiene l'immagine di piu' segmenti (i com soltanto 1), e
diverse altre cose.
E' possibile che all'inizio del tuo file .exe ci sia l'immagine di un segmento
destinato a contenere le variabili... per questo il valore di ogni cella
verra' assegnato piu' tardi...
... naturalmente sottoline _e' possibile_... in casa M$ puo' accadere
di tutto :-DD
-- 
"Colui che sorride quando le cose vanno male ha pensato a qualcuno cui dare
la colpa", legge di Jones
-- 
Emanuele Cesena
d.a.m...@iol.it
    occhio all'antispam NOSPAM!
http://www.geocities.com/SiliconValley/Grid/8879

di tutto :-DD
Ma questi sono prodotti Borland, o Inprise che dir si voglia, che
c'entra adesso M$?
Puo` darsi che si tratti di un (modesto) bug del linker Borland, che
spreca spazio-disco come tu suggerisci, ma allora potrebbe essere
uno spreco simile in qualsiasi altra regione "innocua" del file PE.
Meriterebbe forse fare un eseguibile di post-processing che tolga
dal file PE qualsiasi spazio non indispensabile (o magari basta usare
REBASE, parte dell'SDK di Windows, con l'opzione di togliere le
informazioni di debug...).
Alex

 caricato in memoria.
Il file potrebbe cambiare da una compilazione all'altra se il compilatore
inserisce la data e l'ora della compilazione (non so se il C++ Builder lo fa
veramente).
Nel formato eseguibile di windows (almeno nelle prime versioni) c'era dello
spazio inutilizzato, pero' mi sembra molto grave che il compilatore lo
riempa con dei pezzi di documenti trovati in memoria. In teoria il 
compilatore non dovrebbe neanche avere accesso alla memoria degli altri
programmi.
	Mauro

programmi.
Probabilmente lo riempe con quello che c'e' in memoria,
e, se prima si era caricato un documento word, in memoria rimane il
documento.
Penso che la memoria utilizzata in precedenza da word viene poi utilizzata
da
c++Builder in una allocazione dinamica per cause completamente casuali.
Il vero problema e' che mette delle cose che sono in realta' spazzatura.
Secondo me si tratta di un record con campi di lunghezza fissa in cui la
prima
parte e' valida e il resto serve solo a tenere spazio.
Questa e' l'unica ipotesi un po' sensata
Saluti
    Marco Lerda ( MLProg )