Newsgroup: it.lavoro.informatica
Titolo: linguaggio C - per il pirlotto la memoria contigua o no di un array e' implementation defined



E si ragazzi miei,una puntata veramente stucchevole oggi

Qualcuno, ma avrete capito chi,ha asserito che un compilatore C (o anche 

C++) per un array builtin potrebbe allocare memoria non contigua

Un po come i famosi array non contigui che gli piacciono tanto

Prima di iniziare consiglio l'allontanamento per i deboli di cuore in 

fatto di C

Ok, ecco un po di codice



--- f.c



#include <assert.h>

void f(int* p) {

	assert(p);

	*++p=1;

}



-- main.c



#include <stdlib.h>

#include <string.h>

#include <assert.h>

void f(int*);



static int a[1000000];

static int b[100];



static void loop(int* p,size_t sz) {

	assert(sz);

	while(--sz)

		f(p++);

}



#define SZ(a) (sizeof(a) / sizeof(a[0]))

#define DSIZE (1000)



int main() {

	int d[]={1,2,3,4,5,6};

	loop(a,SZ(a));

	loop(b,SZ(b));

	loop(d,SZ(d));

	int* p=(int*)malloc(sizeof(int) * DSIZE);

	if (p) {

		memset(p,0,sizeof(int) * DSIZE);

		loop(p,DSIZE);

		free(p);

	}

}

-----

$gcc -Wall main.c f.c



Ora lo sputtamento con cappellata a sinistra andra in onda per la 

delizia di qualcuno e per l'inferno di qualcuno d'altro.

Questo programma funziona con tutti i compilatori C ma anche se fosse 

C++ sarebbe la stessa cosa

*++p in f() non  produce UB,cioe' non accede mai fuori dai limiti di cio 

che gli e' passato od a una cella di memoria invalida

Ora, qualcuno mi deve spiegare,ed il pirlotto in particolare, come fa il 

compilatore quando compila f.c (che e' un modulo separato da main) a 

sapere che la memoria con cui ha a che fare p  potrebbe non essere contigua

A me non risulta che per ogni funzione a cui sia passato un pointer il 

compilatore passi la definizione della struttura a cui il pointer punta

Oppure che un pointer sarebbe in realta una struttura ben piu complessa 

per sapere se ha a che fare con memoria non contigua, ma la sua sizeof 

sarebbe ben maggiore cosa che non e'.

Oppure ancora che il compilatore immetta nella memoria dei tag 

particolari per indicare che una struttura sia o no contigua (ma anche 

se fosse f() come fa a saperlo ?)

E per la funzione loop visto che e' nello stesso modulo di main il 

compilatore ne genera due versioni?

Una per memoria contigua e l'altra per memoria non contigua ?










> int* p=(int*)malloc(sizeof(int) * DSIZE); 



non è un array.


 array builtin potrebbe allocare memoria



un compilatore che alloca memoria? 


> array builtin 



cos'è?


 fare p  potrebbe non essere contigua 



i compilatori fanno accessi alla memoria? 


 



ho scritto il contrario ?




 



No, genera il codice per l'allocazione per quando il processo verra creato

Devo specificare tutto nei particolari come i bambini piccoli ?




 



array nativo

[]




Il 04/05/19 19:43, cpascoshi ha scritto:


Ho scritto questo ?






ma stai cercando di imparare come funzionano compilatori, runtime, hosted e freestanding implementations, os, DMA, paging, ... insomma, l'informatica?


 



Lo so gia




> nativo



ne esistono altri?


> ho scritto il contrario ? 



ho chiesto cosa hai scritto?


 

no,hai fatto una affermazione








 



in c no ma in c++ si




 come i bambini piccoli ? 



se vuoi parlare di memoria, devi entrare nei dettagli di tutto. 

altrimenti è come la guerra sul sesso degli angeli™


Il 04/05/19 20:14, cpascoshi ha scritto:


Questa non e' una scuola

Perche dovrei farlo ?

IL programma serve per capire una cosa sola


 Una per memoria contigua e l'altra per memoria non contigua ?

Ovviamente no, perche' dovrebbe? Il compilatore si fida del sorgente, 

mica legge i commenti.


 compilatore ne genera due versioni?



LOL :D Eh? 


 Questa non e' una scuola



Anche perche`, se lo fosse, tu saresti seduto al banchetto in fondo all'aula, COGLIONE INCOMPETENTE.


 in c no ma in c++ si



No, COGLIONE. In C++, un array builtin e std::vector NON sono la stessa cosa. Continui a ripetere PUTTANATE.


 Lo so gia



No, non lo sai. Se lo sapessi, non inizieresti certi post in cui fai solo la figura del COGLIONE.


 IL programma serve per capire una cosa sola



Si, che non sei un "esperto" ne' di C ne' di C++ ne' d'informatica.





"""

5.1.2.3 Program execution



The semantic descriptions in this International Standard describe the behavior of an abstract machine in which issues of optimization are irrelevant.



...



In the abstract machine, all expressions are evaluated as specified by the semantics.



...



More stringent correspondences between abstract and actual semantics may be defined by each implementation.



...



"""





Se non ci arrivi a capire determinate cose, allora è del tutto inutile ti mazzuoliamo con i CAPRA COGLIONE STUDIA: sei limitato.


 di ritorno di malloc() va evitato. 



Quella assert sulla size dell'array fuori dal while? "esperto++"? 






 fuori dal while? "esperto++"? 



Sarebbe divertente scoprire che il type system del C ammette tre tipi di array, al di fuori delle tipiche extensions di un compilatore. Non fosse altro che "l'esperto" ci ha appena rassicurato in C ne esiste solo uno.



rotfl. seminatore impunito di bug.


 Quella assert sulla size dell'array fuori dal while? "esperto++"?



E perche`, la malloc seguita da un memset, al posto di una semplice calloc?



E poi "f.c" dove lo mettiamo? Un capolavoro.



Dai, su, basta, basta, basta, che poi devo tirare fuori la mazza chiodata dall'armadio. Mi ero ripromesso di non farlo piu` con lui. Non istigatemi!




Il 05/05/19 02:18, 4ndre4 ha scritto:


esiste std::array che e' un wrapper su []




 mica legge i commenti.

ovvio




 di ritorno di malloc() va evitato. 



Ah ma tu sei rimasto che il cast in C potrebbe mascherare gli errori? 



Scusa ma vedi di svegliarti eh, se non lo sai: "C è C++" cit. enoquick ...


 





Risultato:

Ti sei completamente sputtanato ed hai ancora il coraggio di parlare

Ovviamente nessuna argomentazione tecnica sull'argomento, il nulla del 

nulla

Magari, invece che insultare come al solito, perche non ti metti ad 

aguzzare l'ingegno su come un compilatore potrebbe gestire ++p in f.c su 

un array non contiguo per dare addito alla tua affermazione ?

Magari trovi una soluzione

Buon divertimento e salutami i tuoi array non contigui




 esiste std::array che e' un wrapper su [] 



Il nome di un array decade a puntatore al primo elemento. Questo non accade con std::array. Ne segue che std::array non è un array.


 la vita per mettere su un array a memoria non contigua



Perche` l'efficienza e` garantita dall'architettura sottostante, NON dal compilatore, COGLIONE. E l'architettura sottostante puo` organizzare la memoria COME VUOLE, se lo fa in maniera efficiente, DEMENTE IGNORANTE.


 



Irrilevante

E' un array

Non e' obbligatorio per un array decadere a puntatore

Anche std::vector e' un array e non decade a puntatore

Questa e' solo una eredita dal C

Dovresti concentrarti su cosa e' un array invece:

memoria contigua di elementi dello stesso tipo con tutto cio che ne 

consegue (il tipo di operazioni di base esistenti)

PS:

quelli che il pirlotto chiama array non contigui non sono array,ma un 

altro tipo di struttura che puo chiamare come vuole anche "array non 

contigui" o 4Aarray o pirlottoArray

Tra l'altro implementabile in vari modi






 Buon divertimento e salutami i tuoi array non contigui



Gli array non contigui non sono "miei", CAPRA IGNORANTE. 



Seriamente, smettila di sputtanarti e renderti ridicolo, BUFFONE INCOMPETENTE!


Il 05/05/19 08:35, 4ndre4 ha scritto:


Pirlotto,la memoria e' paginata

Sugli OS moderni ci pensa il kernel a fare vedere memoria contigua al 

processo

Ma ti d'ho una possibilita

Un compilatore ed una architettura che si comportano in quel modo

Oppure un paper su C/C++ che spiega quello che affermi

Trovalo e ti faro un monumento


 quelli che il pirlotto chiama array non contigui non sono array



Senti, GRANDISSIMO COGLIONE, vedi di stare zitto, siediti e APRI LE ORECCHIE: gli array non contigui non li ho inventati io, BUFFONE INCOMPETENTE.



Smettila di CIANCIARE PUTTANATE, apri un libro e STUDIA!


"Ma ti d'ho una possibilita"



LOL :D ... ma cosa "D'hai" tu? :D COSA? CAPRA IGNORANTE!!!!!!!



Non me ne fotte una beneamata MAZZA di darti esempi. Gli esempi non contano UN CAZZO. Tutto quello che "d'hevi" capire, e` che l'allocazione di memoria e` IMPLEMENTATION-DEPENDANT, COGLIONE INCOMPETENTE!!!!!


 complesso per fare contento te ? 



Ovviamente per tracciarne la provenienza, per fare analisi sull'aliasing etc.





Lasciala perdere l'informatica che non è cosa tua.


 





Pirlotto,l'allocazione di memoria,quando esiste un kernel,e' lui che se 

occupa e la fa vedere sempre contigua

Se il kernel non esiste e' sempre contigua o al piu a  segmenti (come 

nel vecchio x86)

Ma nei vecchi compilatori C per DOS un pointer non poteva scavalcare un 

segmento con un semplice ++



Il Sat, 04 May 2019 19:20:07 -0500, enoquick ha scritto:





[snip]



senti ma di questa perla ne vogliamo parlare?



 



E ci mancherebbe

Dal nulla niente potrebbe essere inventato


Il 05/05/19 08:52, 4ndre4 ha scritto:


Dal punto vista del pirlotto si ragiona a dogmi non a scienza

Cosi come nella chiesa medievale se qualcuno si domandava un qualcosa e 

chiedeva agli "illuminati" dell'epoca la risposta era "e' cosi, e' un dogma"

Sveglia,che il medioevo e' passato da un pezzo




 



Studia capra


Il 05/05/19 09:18, rootkit ha scritto:


Se hai critiche falle invece che additare a fatti chiamandoli 

genericamente perle

Oppure vuoi fare la figura di esperto C ?




 Irrilevante  



Solo per te.



Gli esperti, lo Standard C, lo Standard C++, io e il resto del mondo intero, sappiamo cosa è rilevante: std::array non è un object di tipo array. Ergo non è un array.



Fine delle stronzate.


nah.


Il 05/05/19 09:45, cpascoshi ha scritto:


E' una classe che implementa il concetto di array

Devo spiegare tutto come ai bambini piccoli ?




 



il nulla,come quasi tutti del resto

Almeno il dottore e' l'unico che finora ha dimostrato di conoscere il C, 

ma per il resto stendiamo un velo pietoso







mi riferisco ovviamente alla assert sul secondo parametro.

e mi chiedevo che c'ha nella testa uno che fa un controllo del genere.

se sz è negativo il programma fa un botto che lo ritrovano in vetta a 

monte morello.

naturalmente dirai che non è un programma di produzione, etc, etc, etc. 

ma allora perché mettere una assert sbagliata?


 Dal nulla niente potrebbe essere inventato



Il NULLA e` esattamente quel che sei, ARROGANTE PAGLIACCIO INCOMPETENTE.


 Dal punto vista del pirlotto si ragiona a dogmi non a scienza



Ma che cazzo dici? Manco in italiano sai scrivere. TACI CAPRA TACI PORCA MIGNOTTA!!! Non farmi prendere la mazza chiodata!!




 ma per il resto stendiamo un velo pietoso



L'unico che non conosce il C, sei tu, PEZZO DI MERDA INCOMPETENTE. Io te lo posso insegnare dalla A alla Z e oltre.


 Scusa ma vedi di svegliarti eh, se non lo sai: "C è C++" cit. enoquick ...



Azz, e` vero, inchinarsi al maestro (di 'sto cazzo).


 che sono classi



std::array non è una classe. è un class template aka template che definiscono classi. 



esistono i template. tra questi ci sono i class template. 



i class template non sono classi.



"""

Standard: 23.3.1 Class template array

"""



ancora una volta c.v.d. non sai un cazzo.




 E' una classe



nah.


Il 05/05/19 09:59, rootkit ha scritto:


non e' un errore,semmai avresti dovuto fare notare che e' mancante 

assert(p)

Ma gli assert sono molto utili per i test (non come sostituto ma come un 

di piu)

Senza assert ci sarebbe il botto ma dovresti usare gdb (il debugger) per 

trovarlo (non che sia  difficile trovare il problema in questo caso) ma 

con gli assert in fase di test ci si accorgerebbe subito del problema.

In questo caso essendo un semplice programmino potevo anche farne a meno 

ma e' una mia abitudine

Per programmi complessi l'uso degli assert e' fondamentale per testare 

il sw

Evita molte grane che senza assert faresti una grossa fatica per trovare 

il problema (ma ovviamente nessuno afferma che assert rilevi tutti i 

problemi)

E non comportano perdita di efficienza in produzione se si compila con 

-DNDEBUG

In c++20 hanno finalmente fatto un salto qualitativo su queste cose , la 

contract programming che aspettavo in c++ dai tempi di eiffel (anni 90)

In c++20 assert (la macro) sara ritenuta obsoleta




Il 05/05/19 10:05, 4ndre4 ha scritto:


stendiamo un velo pietoso,nulla del nulla




Il 05/05/19 10:04, 4ndre4 ha scritto:


spiega pirlotto,invece che inveire come al solito




Il 05/05/19 10:03, 4ndre4 ha scritto:


specchio!!






Il 05/05/19 10:09, cpascoshi ha scritto:


un class template non e' una classe

Bellissimo

Occorre spiegare ai diversamente intelligenti c++ che una classe 

template diventera una vera classe quando verra instanziata dal compilatore

Ho a che fare con dei pivelli






 Pirlotto,l'allocazione di memoria,quando esiste un kernel



Smettila di scrivere PUTTANATE, INCOMPETENTE!


 stendiamo un velo pietoso,nulla del nulla



Stendiamolo, ma su di te.


 che fa un controllo del genere. 



metti che, di notte gli entra in casa "la banda Java™" e gli sostituisce int d[0]; alla dichiarazione di d nel suo sorgente. gcc lo accetta come da sua zero-lenght arrays extension e...



Specchio!! AR AR AR AR BANDA JAVA FREGATA


 spiega pirlotto,invece che inveire come al solito



Questo non e` il tuo corso di recupero scolastico, CAPRA!


 non e' un errore



è una stronzata.


 contract programming



Azzo!!! Che saltone qualitativo!! Se so svejati, finalmente, eh?


 l'altro non significa "nativo")



L'ha sentito nelle presentazioni di herb sutter e ripete a pappaguallera come suo solito senza capirci 1chezzo


 Azz



cmq ho sbagliato mi pare fosse precisamente "C e C++". manco il verbo essere


Il 05/05/19 10:24, 4ndre4 ha scritto:


neanche il tuo

ma visto che hai fatto una affermazione almeno afferma le cazzate che 

scrivi

Da quando dopo un malloc non  si possa fare un cast lo sai solo tu


 compilatore



Visto? L'hai confermato tu stesso.





Ma per curiosità: se chiami classi i class template, quando poi ti serve riferirti ad un class template (proprio come std::array)... come lo chiami, SARCHIAPONE? 



...



DATEMI UNA C

DATEMI UNA O

DATEMI UNA G

DATEMI UNA L

...

C O G L I O N E E E E!!


 assert(p)



quindi mi stai dicendo di aver messo un assert su una variabile al posto 

di un'altra e ciò non è un errore. giusto?

no, faccio per capire come ragiona un esperto programmatore di driver.




 Da quando dopo un malloc non  si possa > fare un cast lo sai solo tu 



È roba da pivelli come te. Gli esperti sanno che non è necessario lì in assegnazione. Punto e basta. Come sanno anche da decenni la vecchia questione che in mancanza di inclusione di stdlib.h, a malloc() verrebbe attribuito automaticamente un valore di ritorno di tipo int, per cui il cast etc





Ma questa è roba pro da esperti, CARO IL MIO PIVELLO


Il 05/05/19 10:39, cpascoshi ha scritto:


ma va coglione

Ho a che fare con dei pivelli ed ancora perdo tempo con dei cazzoni di 

questo livello




Il 05/05/19 10:45, cpascoshi ha scritto:


No,pivello

Un conto e' un cast sovrabbondante fatto per puro scrupolo (malloc 

ritorna un void*)

Un conto e' sostenere che e' un errore come fa il pirlotto

E questo ultimo caso che vorrei sapere dal pirlotto




 





Trovamene una di implementazione diversa

basta una

Oppure un paper che lo spieghi secondo lo std (non un paper di qualunque 

possibile millantatore)

Ma il nulla del nulla non spiega una beneamata mazza

Lui insulta e basta


specchio!!




Il 05/05/19 10:23, 4ndre4 ha scritto:


specchio!!


 



specchio!!

almeno dimostralo se lo ritieni




Il 05/05/19 10:26, 4ndre4 ha scritto:


specchio!!



con agli analfabeti funzionali ho perso troppo tempo


Il 05/05/19 10:43, rootkit ha scritto:


Non ho messo un assert al posto di un altra

Ho dimenticato una assert, assert(p)



Il 05/05/19 10:24, cpascoshi ha scritto:


SPECCHIOOOOO!


Senti coso scemoquick il tuo codice fa cagare e basta, è ridondante, lungo, meno manutenibile e generico del dovuto, blablabla 6 1 pivello MILLANTATORE del cazzo tu e le tue i utili assert messe a cazzo di riccio di mare



questa è merda pivellica :

int* p=(int*)malloc(sizeof(int) * DSIZE); 



questo è lo stile di UN MAESTRO :

int *p = malloc(DSIZE * sizeof *p);



fai cagare tu le tue stronzate e la tua ignoranza. MA TU INSISTI INSISTI INSISTI


Il 05/05/19 11:12, cpascoshi ha scritto:


specchio!!

la merda pivellica e' nel tuo cervello




 assert(p)



quindi si torna al discorso di prima, perché mettere una assert a cazzo: 

blocca il valore zero ma lascia passare valori negativi che, parimenti 

allo zero, mandano a scrivere per il cyberspazio.


Il 05/05/19 11:20, rootkit ha scritto:


size_t e' unsigned,garantito dallo std

per cui non puo mai essere < 0




I  C A N  D A N C E  A L L  D A Y

  I  C A N  D A N C E  A L L  D A Y

B O O O O M  H E A D S H O T

  B O O O O M  H E A D S H O T

    B O O O O M  H E A D S H O T ! ! !



https://youtu.be/ovsVU6mktOw



 



Inizio ciclo

	E che vordi?

	Ndo vai.

	Al cinema

	A vede che?

	IMPLEMENTATION-DEPENDANT

fine ciclo





Era Quo vadis ma fa lo stesso

e' IMPLEMENTATION-DEPENDANT



P.S.

IMPLEMENTATION-DEPENDANT

Lo ho tradotto Dipendente dal progetto/realizzazione

Ma in /inglese/ sono una chiavica.





-- 

ac (x=y-1)

Aborro il Killfile

(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)


STOCAZZO ALESSÀ STOCAZZOOOO


 



benvenuto nel divertimento

Il pirlotto questa volta l'ha sparata grossa

Roba stratosferica




 mica legge i commenti.



Cosa azzeccano i commenti?



Sto cercando di appassionarmi ai tuoi post.

Programmatore e commenti, ipotizzo, sono una ciofeca.

Il programma compila ed in esecuzione fa il suo porco lavoro.

Stante il fatto che non sa che lo ha scritto enoquick

(sapendolo potrebbe rifiutarsi? Si sa i pezzi di ferro hanno un anima!)

E quindi?



Enoquick sta a spara' cazzate cosmiche?

O stratosfericamente potrebbe essere vicino alla realta'?



 



Che e' successo?

Nun te s'addrizza piu?

Nun piscia?

Ehhhh....so problemi!



enoquickke t'ha rubato la scena. te sei fatto fregà er posto da 'n mongospastiqo porcamadò resta croccante resta croccantee


 



Mi spiace.

Mai tentato di fare il primo attore (o attrice e' uguale)

L'ultimo tentativo e' stato un errore.

Il penultimo mi sono sputato per averlo fatto (per una meta').

I precedenti (pochi, 3 o 4?) solo prove di scena malriuscite.

Ovviamente mi riferisco ai miei IP.



Comunque se continuate a urlare, bestemmiare, mandare coloriti

improperi, efebiche battutine vedro' di renderti/vi la vita piu'

piacevole.

Probabilmente cambiero' qualcosa in firma.

Che dici se scrivo "...e utilizzo ARRAYS randomici(*)" vicino

ad "Aborro i killfile " potrebbe essere abbastanza croccante?



(*) Anche porcamadò potrebbe andare



 Ok, ecco un po di codice



http://www.cplusplus.com/doc/tutorial/arrays/




An array is a series of elements of the same type placed in contiguous 

memory locations that can be individually referenced by adding an index 

to a unique identifier.







Non sara il book std ma la fonte e' autorevole



Alla faccia della implementation defined,solo nella testa bacata del 

pirlotto possono nascere simili idee






 Da quando dopo un malloc non  si possa fare un cast lo sai solo tu



Non, e` una conoscenza DI BASE che ha chiunque conosca il C e lo abbia usato da un bel po' di anni. 



http://c-faq.com/malloc/mallocnocast.html




STUDIA, COGLIONE INCOMPETENTE!


 Roba stratosferica



Sono io che mi diverto a leggere quel che scrivi, RITARDATO INCOMPETENTE. 



Sei tu che le spari grosse, enocock. Sei un COGLIONE INCOMPETENTE.


 Trovamene una di implementazione diversa



Frega cazzi di trovarti l'implementazione. Non e` quello il punto. Il punto e` che il layer al di sotto del linguaggio simbolico portabile e` IMPLEMENTATION-DEPENDANT. COGLIONEEEEEEEEE. Lo standard stesso del linguaggio non menziona NULLA sull'implementazione dei concetti citati. 



E che fai, sulla roba che i puntatori sarebbero interi, glissi? :D


On Sunday, 5 May 2019 20:27:31 UTC+1, enoquick  wrote:



[...]

Allora te lo ripeto, DEMENTE INCOMPETENTE: non sono i compilatori ad allocare memoria, sono le implementazioni/architetture "al di sotto" dei compilatori a farlo - quindi continuare a citare C o C++ non aggiunge assolutamente nulla al discorso: non si sta parlando di come il compilatore compili, ma come l'implementazione implementi, COJONE!!!


 Ho dimenticato una assert, assert(p)



E` perche` non scrivi unit test, CIALTRONE INCOMPETENTE.


Il 05/05/19 15:36, 4ndre4 ha scritto:


coglioncello,e' proprio per chi dimentica di includere stdlib.h

Poiche ovviamente metto sempre gli header che servono (uso sempre -Wall)

quello che hai scritto non ha significato

Omettere un header (di sistema o no) puo essere fonti di gravi errori in 

quanto il compilatore non puo sapere i tipi degli argomenti (assume int) 

cosi come il tipo di ritorno (assume sempre int)

Quindi la tua affermazione di grave errore e' completamente sbagliata.

Grave errore semmai e' omettere un header,non  il cast sulla malloc




> Mi spiace. 



ammè no che non vali un cazz.


 





Lo std richiede un array contiguo e l'implementazione (il 

kernel?),quando viene creato il processo alloca array non contigui ?

Deve essere una architettura fantastica (ironico)

Perche mai dovrebbe farlo non si sa

Allo startup viene preparata la bss dal kernel

Gia qui perche mai il kernel dovrebbe allocare array non contigui non si 

sa visto che per lui e' facile allocare tanta memoria quanto serve per 

preparare la bss.

Si vede che a questo kernel gli piace prendersi mazzate alla Tafazzi




















 coglioncello,e' proprio per chi dimentica di includere stdlib.h



RINCOGLIONITO, VAI A STUDIARE!


 Lo std richiede un array contiguo



Lo standard non *richiede* proprio un cazzo, COGLIONE INCOMPETENTE. Non richiede uno stack, non richiede la memoria contigua, non richiede un heap, non richiede un bel cazzo di niente! Sono tutti dettagli implementativi, che i redattori dello standard lasciando volentieri FUORI dalla specifica. 



NON CAPISCI UN CAZZO!


 coglioncello,e' proprio per chi dimentica di includere stdlib.h



RIMBAMBITO! Qualunque esperto di C (cosa che tu NON sei) sa bene che il cast sul valore di ritorno di malloc(), in C, VA EVITATO, proprio perche` si deve includere stdlib.h e la conversione da void* a T* avviene automaticamente, a differenza di C++ (che invece esige il cast). 



http://c-faq.com/malloc/cast.html




STAI ZITTO E VAI A STUDIARE, CAPRA INCOMPETENTE!


 pirlotto possono nascere simili idee



Mi fai schiattare dalle risate: ancora non hai capito di cosa si sta parlando. E ti ho pure postato gli stralci esatti per capire quale sia la machine e quale la memoria che il C e il C++ espongono al programmatore.

Ma perchè non ti studi un draft invece di restare a questo livello di becera ignoranza? È stupido non sapere. La conoscenza[*] è tutto. 





[*] insieme alla volontà di agire.


 
http://c-faq.com/malloc/mallocnocast.html




Santo Steve Summit. Gli devo seriamente qualcosa. Non tanto per le faq di comp.lang.c ma per quelle note dei suoi corsi che aveva online.


Il 05/05/19 16:48, 4ndre4 ha scritto:


coglioncello,lo so

ma non e' un grave errore metterlo

e' solo inutile




 



sei arrivato tardi, gia spiegato




 sempre int) 



Eh no ciccioquick non funziona così, che vedi l'esperto scrivere qualcosa e lo copi a pappaguallera. L'esperto ha scritto _appositamente_ "la vecchia questione"... e tu mi abbocchi copia copiarella. L'esperto vero *è*, non millanta un rigo si e l'altro pure.



Fila a studiare cosa dice il C89 sul casting di void*, se in C99 si può omettere il valore di ritorno quando int, che fine fanno le funzioni implicite in C11, etc. 

Mica si ricopia il mio poche righe sopra e si diventa esperti, caro pivellozzo.


 e' solo inutile



Non ho mai detto che e` un grave errore fare il cast sul valore di ritorno di malloc(), ho scritto che e` grave che tu dica di essere un maestro di C e non sappia questi concetti di base., come il fatto che il cast e` non solo inutile, ma potenzialmente dannoso, PAGLIACCIO INCOMPETENTE.



Maestro di C di STO CAZZO!



Hai onestamente ROTTO I COGLIONI con la tua testardaggine IDIOTA, da OTTUSO quale sei. Non ti meriti altre risposte. Hai generato l'ennesima thread lunghissimo per i tuoi battibecchi da CAZZARO ARROGANTE, INFANTILE INCOMPETENTE quale sei. 



VAI A FARE IN CULO! Ultima risposta da parte mia. Ora, mi raccomando, riaprine n'antro in cui fai l'ennesima figura di merda.


Eh???


 sei arrivato tardi, gia spiegato



Tu non spieghi un cazzo, COGLIONE. Tu hai solo da imparare.


 Tu non spieghi un cazzo, COGLIONE. 



per lui spiegare è copiare quanto detto pochi post sopra, come se non ce ne accorgessimo... pivello vizioso!


 Una per memoria contigua e l'altra per > memoria non contigua ? 



E su queste note ed interrogativi, che lasciano chiaramente intendere quanto tu ne sappia in generale di sistemi di vm e mmu.



Possiamo chiudere anche quest'n-esimo

 Stronzmark™ by enoquick



.


Il 05/05/19 18:16, cpascoshi ha scritto:


veramente l'interrogativo e' dovuto alla mente del tuo socio che 

continui a difendere a spada tratta in quando sei fazioso ed ignorante 

in fatto di sistemi

Io ho solo proposto alcune possibili soluzioni assurde in quanto e' 

assurda la partenza




Il 05/05/19 17:41, cpascoshi ha scritto:


si va bene, ci sara qualche differenza

Ma non  me frega una cippa

Io uso gli header per cui ricordarmi a memoria tutte le piccole 

sfumature di questo caso non me ne puo fregar de meno

Se mi interessasse vado a cercare




ah ecco non sai, includi gli headers poi si vede semmai. *PIVELLOZ*


Il 05/05/19 17:56, 4ndre4 ha scritto:


ma dimmi una cosa caro coglioncello

Perche non trovi una soluzione per le puttanate che hai scritto sulla 

implementazione dei famosi array implementation defined invece che 

rompere le palle al  sottoscritto ?

tanto lo so che vuoi sviare con le tue belle cazzate andandomi contro 

per dimostrare cosa ?

Che non conosco il C ?

Che non conosco il C++?

Che non conosco sta minchia ?

Ma pensa a quello che non conosci tu invece che rompere i ciufoli su 

cose irrilevanti come queste

Come tutti se non  ricordo perfettamente qualcosa di un determinato 

linguaggio cerco per informarmi,ma perche serve a me

Tu invece cerchi per sputtanare qualcuno in quanto si e' dimenticato di 

una virgola oppure ha scritto una frase precisamente non conforme al 

discorso oppure (come in questo caso) chiede le motivazioni (visto che 

tu hai accusato,mi sembra anche giusto) ed il risultato quale e?

Che la richiesta viene fatta in quanto e' lui che non conosce 

l'argomento, non in quanto richiesto perche e' accusato

Il mondo kafkiano mi sembra piu logico di te

Quindi riepilogando, va ai a quel paese, non ho tempo da perdere con dei 

coglioni cosi




Te se di sistemi conosci quelli per le schedine è già assai, *PIVELLOZ COMPROVATOZ & CERTIFICATOZ*


 



che cosa ?




 





specchio!!




Si ma ora perchè chiagni, nun chiagnere rilassa i pugnetti nun è succiess nient

BRUTTO CATTIVOZ FOURNDREFOUR NON SI FA CON NESQUICCHI CATTIVO-Z! CATTIVOZ 4X4-NDRE CATTIVAH 



dai quickki tutt'appost posta n'altro stronz..errr benchmark. vai


S T O C A Z Z O !


ma beppino uccelliDeRovo non ti aveva spiegato che i binbi dicheno specchio riflesso? E quann cazz t'mpari, maje?


 assurda la partenza 



No, tu scrivi cazzate senza senso perchè non dai di cosa parli e continui a dimostrarlo in ogni periodo, caro signor "esperto" "maestro" di sistemi e del "book std" di "C è C++".



CAZZARO


 coglioni cosi



No, no, a FARE IN CULO ci devi andare tu, COGLIONE. Hai fatto perdere fin troppo tempo a tutti, ZIMBELLO da quattro soldi che non sei altro. 




 Ma ti d'ho una possibilita



Anche questa frase merita di entrare nell'elenco degli orrori.





-- 

The three most dangerous things in the world are a programmer with a 

soldering iron, a hardware type with a program patch and a user with an 

idea.


 un array non contiguo per dare addito alla tua affermazione ?



"addito".....segna anche questa, và!



 



Ale', altra maestrina dalla penna rossa.



-- 

ac (x=y-1)

Aborro il Killfile

(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)


 "addito".....segna anche questa, và!



Azz, m'e` finito lo spazio sul foglio!






 



Vai a fartelo stroncare nel culo tu e la tua penosa retorica del cazzo.



 





Io ho capito un sola cosa

Che non capisci una cippa visto che quella roba che hai postato non 

significa niente




 



E' un syntax error voluto ed ironico per prendere il culo i pivelli come te




infatti quelli sono numeri al lotto

giocati  5.1.2.3 Program execution 5+1 1+2 2+3 5+1+2 1+2+3 sulla ruota di STOCAZZO e magna trancuill compà


 



ça va sans dire



 E' un syntax error voluto ed ironico per prendere il culo[...]



AAAAAAAAAAAAAAAAAAAAHHHHH CE STAVI A COJONAAAAA!!!!



Ma allora dillo!!!! SIMPATICONE che non sei altro!



Cioe` non sei veramente un COJONE INCOMPETENTE! Fai solo credere di esserlo!!



Te possino! Sei popo er peggio!!!




 





Ovviamente un bello specchio

Con tutti quelli che hai rotto altro che 7 anni di guai


 ng dalla vergogna



Le cazzate, DEMENTE, le stai scrivendo tu, non io. Avresti dovuto DA TEMPO andarti a nascondere per la vergogna. VERGOGNATI e VATTI A NASCONDERE. ORA!


Il 06/05/19 13:45, 4ndre4 ha scritto:


Infatti attendo ancora la spiegazione sul funzionamento di questa 

fantomatica architettura




 



specchio!!


 Infatti attendo ancora la spiegazione 



Tu devi aspettare la camionetta del centro di igiene mentale, COGLIONE!


Il 06/05/19 14:06, 4ndre4 ha scritto:


specchio!!


 



Azz! Un po' di autocritica.

ciunca qua ciunca la

ciuca qua ciuca la

suca qua suca la

Taglia qua cuci la

si arriva alla verita'!

ciuncavo quando ciucciavi

ma o ciuccio ancora ciuccia



 arrays come sarebbe fatta e come funziona ?



Dal punto di vista /teorico/ potrebbe essere abbastanza semplice.

Ma, in questo caso, potrebbe/dovrebbe  funzionare su tutto compreso le 

istruzioni di programma e compreso lo split di un intero.

Non e' l'uovo di Colombo della VirtualMemory?

Ed, ovviamente, la stessa "interfaccia" sarebbe valida per qualsiasi

linguaggio anche il piu' scrausi  (tpo Java ;-) ).

Tutto questo e' /trasparente/ rispetto al programma stesso e'

un dietro le quinte

Al mio tempo era quello che faceva una chiamata

a Supervisore (SVC+codice).

L'acqua calda credo sia conosciuta fin dal Cenozoico, cioe' i miei tempi.

Come al solito al grido "Ma le Foibe! " tutto in caciara.



 







Ammettendo che sarebbe anche possibile ma che senso ha ?





Prendiamo solo per esempio due var globali





char a[20000];

int x[9999999999];





quando il processo viene creato il kernel alloca la VM per le variabili 

globali  (sizeof(a) + sizeof(x))



Perche mai dovrebbe spezzare in chunk a o x ?




 Te possino! Sei popo er peggio!!! 



STOMATTACCHIONE!


sei un povero ritardato incapace di comprendere. 


> e tutti voi mi avreste insultato a morte. 



Veramente già ti insultiamo a morte e a ragion ben più che veduta . CUGGHIUNE


> Sai, quel ++p non riesco a capire come possa saltare da 



Sai. Quando una parte della memoria su cui stai operando è nella cache L-quellochettepare, e l'altra parte no. Com'è possibile che uno fa ++p oppure p++ trasparentemente, e funziona ?


io attendo ancora il nome del corso di studi con teoria della computazione e complessità al primo anno.


Azz. Specchio allo STANDARD ti permetti di fare. bell' "esperto" millantatore del cazzo che sei compl1ment1


 al programma stesso e' un dietro le quinte 





Sssssignori COLPO DI SCENA!

con solo un tentativo approssimativo ma ammettiamolo genuino Alessandro Cara dimostra di averci capito più d'informatica lui del sedicente-pivello-esperto-maestro-millantatore!!!

Incredibbbolixxx :OOO


CARA: è IL TUO MOMENTO . NON BUTTARLO VIA



riflettici bene. non dare per scontato nulla. parti dagli assunti. fissa le definizioni.


 



coglioncello bello,a livello di kernel la memoria e' paginata

E' il kernel che ci pensa a rendere lineari gli indirizzi

Ma non ha niente a che fare con i fantomatici chunk arrays a livello di 

macchina C




specchio!!


> ,a livello di kernel la memoria e' paginata



Ma che cazzo c'entra il paging mò Rotfl coglione specchiato!!


> E' il kernel che ci pensa a rendere lineari gli indirizzi



WOOOOW lo stai dicendo tu, eh.



In hardware ci sono:

- gruppi di indirizzi "lineari" 

- gruppi di indirizzi non "lineari"



L'insieme di kernel, vm, tlb, memory controllers, caches, etc elaborano il tutto passandolo ad esempio allo user space.



La C abstract machine, in tutti i casi possibili, fornisce comunque la visione "lineare" all'interno di un singolo object allocato in una singola operazione.



Ne segue, proprio come volevasi dimostrare, che la "linearità" dell'object considerato è un attributo aggiunto e garantito dalla C abstract machine. L'area di memoria reale sottostante può essere tutt'altro che "lineare". E cambiando dalla C abstract machine ad altro ambiente, ad esempio in Fortran, le caratteristiche e garanzie diventano altre.



Tu te la sei evidenziata, tu te la sei spiegata. Hai fatto tutto te. Complimenti, pivelloz


il paging col C, tipo gli gnocchi al grasso da ingranaggi porc...


 a livello di macchina C 



ahè t'ho insegnato della abstract machine C e ho fatto un guaio. mò confondi quello e mariastella. STRUNZ è l'esatto contrario, la parte lineare trasgormata o meno va con l'abstract machine del C; la parte pregressa, con i livelli sottostanti.



Se consideri il Fortran, l'elaborazione contigua, non-contigua, in stride o slice, l'allocazione di quantità oltre i limiti fisici della macchina etc sono previste considerate e ottimizzate dagli standards e protocolli high-perf annessi tipici di quei settori d'impiego. 





Adesso. Se uno fosse un minimo fottutamente meno rincoglionito del cazzo, capirebbe subito a che serve avere una semantica astratta che ad es. non limita gli arrays a sole strutture contigue, e i vantaggi da trarne poi passando sulle effettive semantiche dei processori/sistemi di calcolo in generale... 





Tralascia kernel e VM e variabili globali o meno.

Cerchiamo di vedere la cosa in termini /generici/



Posso accomodare nella memoria reale solo 100byte alla volta e quindi 

/spezzo/ ogni cento byte /ndo cojo cojo/ la mia applicazione che,

  nella sua interezza, mi occupa 10k.

L'importante e' che al momento in cui devo eseguire qualcosa ho

l'intero  (nel senso di completo e non di tipo intero) a disposizione.

E' ovvio che da qualche parte devo tenere un indice che,

banalmente, puo' essere:  id, indirizzo , lunghezza di cui conosco

la organizzazione.

Se mi serve qualcosa che sta su 2 id diversi non faccio altro che 

/cucire/ i due pezzi e prendere quello di cui ho bisogno.

Anni fa (tanti) , non mi dilungo sul perche', mi capito' di dover

/spezzare/ su record un campo numerico (erano record a tracciato fisso).

L'operatore (*) non vedeva di certo l'importo spezzato (era un importo)

che ne sapeva del /papocchio/ che avevo combinato e tantomeno del

perche' lo avessi combinato. Fare il /papocchio/ mi costo' mezza

giornata. Se avessi dovuto ristrutturare la base dati ci diventavo vecchio.

Ora ammettiamo che l'operatore sia il programma.

Il programma vede le cose in /continuita/ ,ed e' la cosa importante,

il /sistema/ retrostante potrebbe fare le cose piu' ignobili e

disperdere le informazioni nei modi piu' strani possibili, non

mi e' dato sapere e non /interessa/ il saperlo.

L'importante e' che renda/mi mostri le cose come me le aspetto

quando e se gliele chiedo.



Conclusione.

Gli array, visti dal programma, sono continui. Visti dal sistema

retrostante potrebbero e _sottolineo_ potrebbero essere dispersi

nel modo piu' strano e, come gli array,  _qualsiasi altra cosa_ .

Naturalmente il linguaggio usato e' ininfluente prima o poi sempre

al _linguaggio macchina_ si deve arrivare.

Il nostro punto di vista e' quello del programma e non le "Foibe" (**)

di quel /genio/ che spara COGLIONE a destra e a manca e che

l'unica cosa che dovrebbe fare e spararsi sui suoi (se li ha, cosa di 

cui dubito)





(*) intendesi l'umano che opera

(**) E' famosa figura retorica



 



Quando imparerete, quando imparerete? (tu ed un altro) a quotare e

rispondere da persone adulte?

Sono stato tacciato di "maleducazione", i miei erano /fiorellini/

in confronto a questo starnazzare inconsulto.



Hai tagliato tutto e non si capisce bene a chi rispondi e soprattutto

/perche/  intervieni.

Se hai bisogno di  spiegazioni/chiarificazioni  si fa prima a chiederle.



Ma che è sta strunzat e rispost mò

Che c'è ti sei rotto?

Qua ti si tratta come cazzo ci pare. CUGGHIÙNÈ


Divertente. Un tentativo di ribaltare la frittata che poggia su centinaia di messaggi dove il gruppo vi ha erudito e, al tempo stesso, COGLIONATO e perculato a tutta forza. 



Adesso la "vostra" "visione" è quella del programma. ROTFL... siete unici. demenzialmente unici <3



Come + ti piace, cantatela, suonatela, /scemeggiala/

come vuoi. Ora mi faccio un cafffe'.

Se ti senti solo chiama il telefono azzurro.



Il 07/05/19 06:30, Alessandro Cara ha scritto:


Sono d'accordo su questo, ma cerchiamo di vedere le cose dalla giusta 

prospettiva.

Nei sistemi di oggi dove esiste un  kernel che non  sia primitivo

la memoria e' suddivisa in pagine (2K,4K,ecc.. dipendente dalla cpu)

Il kernel,in collaborazione con la CPU,gestisce l'allocazione delle 

pagine e la gestione dello swap



E' ovvio che se dichiaro un array



char a[6000];



in un sistema a pagine di 4K questo array sara splittato su due pagine 

differenti ad indirizzi magari ben distanti tra loro

Ma dal punto di vista del processo utente quell'array e' contiguo

E' il kernel che mappa gli indirizzi virtuali in indirizzi reali facendo 

sembrare che l'array sia contiguo anche se nella realta non lo e'

Ma tutto questo non ha niente a che vedere con la tesi del pirlotto

visto che lui ha asserito che un array se sia contiguo o no e' 

implementation defined.

E' un balla gigantesca,perfino lo std specifica che gli array builtin 

sono contigui e devono esserlo per garantire *++p (dall'esempio che ho 

fatto)

Inoltre sarebbe anche un assurdita della realta

Perche mai un sistema dovrebbe spittare un array complicandosi cosi la 

vita ? (per gestire un array splittato occorrono tecniche ben piu 

complesse che un semplice puntatore)




 



Dici una cosa e il suo esatto contrario nello stesso messaggio. Sono 

attonito.

-- 

The three most dangerous things in the world are a programmer with a 

soldering iron, a hardware type with a program patch and a user with an 

idea.


 Ma dal punto di vista del processo utente quell'array e' contiguo



Mi sembra sia quello che ho scritto.

La tecnica e' la stessa che sia un array o altra cosa e'

dettaglio di poco conto.

Chi lo faccia e perche' lo faccia e' fuori dall'orizzonte

degli eventi in osservazione. Non interessa.

"dal punto di vista del processo utente quell'array e' contiguo"





 



Se devo essere erudito da te preferisco rimanere ignorante.



La ho vista la erudizione. Riferimenti ad assert che non assertano, a

clock che non cloccano, a commenti sui commenti di programma, a /non/ 

atomismo dovuto a elementoni, alla gazzarra testicolare.

Se tu ti diverti con Boldi come quell'altro chi sono io

per impedirtelo/proibirtelo?

Ma le Foibeeeeeeeeeeeeeeeeeeeeeeee!

Ma il PIDDDDDDDDDIIIIIIIIIIIIIIIIII!

Ma Peeeeeeeenaaaaaaaaaaaaaaaati!

Questo e' quello che avete fatto.

La frittata e' sempre stata li e si fa sempre con le uova.

Almeno il 90% dei messaggi che citi non sono buoni neanche

per pulirsi il culo e neanche per farci i /confetti/

La /mia/ visione e' la /mia/ visione

le "foibe" (e le fobie) le lascio a te

Se il "gruppo" (piu' che gruppo direi branco) sono quei

quattro cani ululanti che ho visto (compreso te) me ne tengo

volentieri alla larga.



 nello stesso messaggio. Sono attonito. 



L'incapacità di ragionare per livelli di astrazione è un limite insormontabile per alcuni. 


 attonito.



Senza vena  polemica.

Quali? non riesco a vederle (la cosa e l'anticosa intendo).



 



Si vede che non ci arrivi, inutile spiegarlo.

Chiedi a Monsieur De Lapalisse.



 Se devo essere erudito da te preferisco rimanere ignorante. 



Come ti sei rotto male™ però.


 



Ahhhhh.....capito

Hai scritto la prima sciocchezza nella lista del

tuo manuale delle medesime.

Qualcuno una volta mi ha rimbrottato spiegandomi

(lo ho ringraziato) che sembra, appare, si mormora

si scriva La Palice.




Rompersi male implica che in qualche modo nel tempo nello spazio

chissa' dove un funzionamento c'era stato.

Tu neanche questa ebbrezza potrai mai provare.

In altro messaggio forse ho scritto che ti eri rotto.

Ritiro tutto. Impossibole.

E questo non e' /perculamento/ solo triste

osservazione della realta'.

Stasera mi faccio una frittatona!

Ci metto le uova? Servono?



 si scriva La Palice.



Inutile conversare con te.



 



Perche' stai conversando?

Citando qualcuno sono "attonito" ed anche un po basito.

"Ahh be si behhh....

Ho visto un re..."

etc.

Concordo sulla inutilita'.



 L'incapacità di ragionare per livelli di astrazione è un limite insormontabile per alcuni.



Ovviamente intendi sempre qualcun altro. Vero?

Che io sia orbo ci puo stare, ci sta

Sono talmente orbo che intorno a me vedo solo ciechi.



 Ma dal punto di vista del processo utente quell'array e' contiguo



Ma va la'.





Sei inutile come un culo senza buco.

Vai ai giardinetti con l'impermeabile, và!



Il 07/05/19 08:00, Roberto Tempesti ha scritto:


nessuna contraddizione

la macchina virtuale C vuole gli array builtin contigui

Quello che ci sta sotto e' irrilevante




 



Ma certo






 sembrare che l'array sia contiguo anche se nella realta non lo e'



Lo hai scritto mentre eri sotto effetto di stupefacenti?



 







dimostra il contrario




 



Pivello una sega.

E' lo stesso concetto  che avevo affermato

Ma e' chi spara puttanate come il pirlotto che ha torto visto che lui 

non ha accennato ad  astrazioni ma proprio di implementazione e quindi a 

livello di macchina C




>  Che io sia orbo ci puo stare



pure l'okkio di vetro mò? cazz ma tutt'a'ttè


 livello di macchina C 



Ti si può riassumere in: pochissime idee e molto confuse.



Ma perchè non apri lo standard e lo leggi? Capiresti qualcosa invece di fare ancora figuracce dimmerda dopo diecimila posts.



Il livello implementativo non è la "C abstract machine". *Abstract*, porcoddio, lo dicono nel nome stesso. tiòcàn



Possibile tu non abbia manco capito cosa implementiamo quando realizziamo quanto prescritto/descritto/previsto nello standard di C e C++? Ma davvero ne stiamo ancora parlando e non ci arrivi? 



Più che Godot. Ritardot




 E' lo stesso concetto  che avevo affermato



Tu non sei in grado di affermare 'na sega.

Stai facendo copiarella della conoscenza che ti sto passando. Lo dimostrano l'uso che fai della mia terminologia - compreso il fatto che scimmiotti anche le offese che scrivo.



6 1 poppante, o poco meno.


non l'ha mai detto


 





fai l'avvocato difensore per i tuoi accoliti adesso ?

Ma il pirlotto dove sta ?

Non gli sara mica venuta una sincope da array non contigui per caso ?

Non vorrei mai che il mio giocattolo si guastasse


Il 07/05/19 14:34, cpascoshi ha scritto:


+ziocan

Mi sa che tu non hai capito una cosa

a casa mia implementation defined significa a livello di macchina C,non 

di quello che ci sta sotto




 significa a livello di macchina C



casa tua è un cesso e tu sei senza speranze.


 fai l'avvocato difensore per i tuoi accoliti adesso ? 



E chi cazzo sarebbero mò? No io ti sto smerdando da settimane senza che tu sia mai riuscito ad azzeccarne una in risposta. Hai acchiappato tanti di quei ceffoni da me che adesso hai la faccia come una boa - sei pronto per le vacanze


Il 07/05/19 17:47, cpascoshi ha scritto:


Vai avanti che mi vien da ridere

Pur di difendere il tuo compare sei capace di qualunque arrampicata




 



Ma quali ceffoni

Ma non farmi ridere.




 Ma non farmi ridere. 



dimostralo


 Vai avanti che mi vien da ridere



ho forse scritto questo?


 la macchina virtuale C vuole gli array builtin contigui 



cheffà la maghina? vuole? ma te parla? chiedici come sta dmr va


  il tuo compare



Cara? Proficuo? 


 



Prrrrr





Un pernacchione






 



si,vuole

Lo afferma lo std




 



si




 si



dimostraloh


 Prrrrr



ooooffffiicccuuuooo


 si,vuole 

e metticelo nel tubo di scappamento



Nessuno , a parte i deficienti come te, accederà ad un elemento 

dell'array attraverso l'aritmetica dei puntatori.

All'array si accede attraverso il suo indice, in tutti i linguaggi è 

cosi'. Proprio perchè nessuno ti garantisce la contiguità in memoria 

della struttura dell'array. Questo non significa che tu non possa 

accedervi calcolandone l'offset. Ma, potenzialmente, puoi ricevere dati 

spuri. Tu teorizzi una "bad practice" che sei padronissimo di usare, 

come del resto puoi tirarti le martellate sui coglioni e godere quando 

sbagli mira.

Non sbatterti nel rispondere, ormai sei un disco rotto.




Tanto vi ha rotto le scatole con le sue cavolate che alla fine vi ha fatto prendere cantonate pure a voi.



In generale hai ragione, ma nel C e C++ è obbligatoria la contiguità.



C99 
6.2.4.20
:

An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf




C++ stessa cosa dal C++03 in poi, vedi 8.3.4:

An object of array type contains a contiguously allocated non-empty set of N subobjects of type T.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf




La malloc pure rispetta la contiguità. Se vai a vedere il kernel di freertos, ad esempio, la memoria sui processori dedicata allo heap è divisa in due regioni non contigue, ma col ciufolo che puoi allocare a cavallo delle due.



Ti ringrazio della precisazione, tuttavia penso alla dichiarata 

contiguità come una contiguità virtuale. Altrimenti non vedo il motivo 

di segnalare la necessità di riferirsi agli array attraverso il loro 

indice e sconsigliare l'uso dell'aritmetica dei puntatori per ricavarne 

un elemento che non sia il primo.



 Non sbatterti nel rispondere, ormai sei un disco rotto. 



Il suo problema non è quello che indichi finchè lui resta su C e C++. Il suo problema è che afferma quella sia tutta l'Informatica - perchè non ne sa d'altro. Gli ho spiegato e dimostrato che altrove esiste ed è definito dell'altro (vd. Fortran, ad esempio). 



Ma poi ho capito che non è proprio in grado di comprendere. Uno che non capisce la differenza tra row-major e column-major order, e le implicazioni che questo comporta (sulla contiguità, sulla spatial/temporal locality, nelle caches, etc ), sta messo messo male. Tutto qui


 In generale hai ragione, ma nel C e C++ è obbligatoria la contiguità



È garantita al programmatore, esattamente come altrove non lo è. scemoquick non ne comprende i motivi e dice che esiste solo il suo mondo con le sue definizioni. È ovviamente un COGLIONE


 All'array si accede attraverso il suo indice, in tutti i linguaggi è cosi'.



Per favore mi spieghi, visto che scrivi /tutti/ i linguaggi,

nell'assembler che ho usato in cui non avevo indici ma solo puntatori

come diavolo facevo a gestirli?



-- 

ac (x=y-1)

Aborro il Killfile

(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)


 Non sbatterti nel rispondere, ormai sei un disco rotto.



Carissimo, l'uso di operator ++ (o -- o altra operazione) con puntatori 

grezzi e' un bad practice in c++

In c++ non si usano i puntatori grezzi ma gli iteratori, che non sono 

altro, per quando riguarda l'iterazione,dei puntatori intelligenti



Questo codice:



std::vector<int> v{1,2,3};



1) for (const auto& c : v) { std::cout << c << std::endl; }



oppure questo:



2) for (auto b = v.cbegin();b != v.cend();++b) { std::cout << *b << 

std::endl; }





oppure questo:



auto b=v.cbegin();

3) while(b != v.cend()) { std::cout << *b++ << std::endl;}



sono tre esempi perfettamente validi e non certo bad practice; l' 1) e' 

il migliore ma 2) e 3) non sono bad practice.

Questo contraddicendo la tua tesi che con gli array si usano gli indici

In altri linguaggi sara per forza cosi ma non in c++ e c

La sicurezza e' la stessa di usare operator [] per 2) e 3) mentre per 1) 

e' al 100%

Il compilatore converte 1) in una cosa simile a 2) o 3)

Ma questo era c++

Se andiamo in C qui non abbiamo gli iteratori intelligenti come in c++

per cui si usa quello che si ha,gli iteratori grezzi,cioe' i puntatori.

E ti posso assicurare che per un programmatore C usare gli iteratori nel 

modo dell'esempietto da me scritto e' normalissimo

Ripeto, credo che tu sia abituato ad altri linguaggi, magari che non 

hanno gli iteratori.






 La malloc pure rispetta la contiguità. 



La malloc alloca uno spazio di memoria e ritorna il puntatore allo 

spazio, che non e' un array.


 

Rinfrescami la memoria, perche' non ricordo proprio che nel linguaggio 

assembly si parli di array, verosimilmente neanche di indici.


 spazio, che non e' un array.



Il puntatore non e' un array ma lo  spazio contiguo ritornato lo puoi 

vedere come un array



int* p = malloc(sizeof(*p) * 100);

p[3]=0;

*(p + 3)=0;



tutto perfettamente valido














 



devi capire che in fondo mi sei simpatico

In alcuni momenti sdrammatizzi la situazione con qualche gag

Non preoccuparti, non sono tuo amico





In altro messaggio scrivevo che in assembler gli array erano logici

intendendo che stavano nella /testa/ del programmatore.

Come tu scrivi non c'era una definizione a meno di una roba del genere

(in quello che ho usato cioe IBM 360/370 + un altro di un'altra 

macchinetta, sempre IBM, di cui non ricordo la sigla)



Label DS 16F



che era presente dappertutto perche' era l'area in cui si salvavano i 

registri che poi accedevi facendo +4*n sull'indirizzo iniziale

(F=FullWord corrispondeva a 4bytes).

Poiche' sono /strambo/ ho continuato a ritenerli cosi' anche in Cobol

dove ho fatto anche /porcate/ indegne.

Ora e' un casino! Non ci sono piu' i rispettabili arrays di una volta.



 devi capire che in fondo mi sei simpatico



fottesega.



Bravo!

Sana e paziente benevolenza anche se i momenti di lucidita' (suoi)

sono rari.



 Ma ti d'ho una possibilita



figa...



  ngw


 



Tranquillo, purtroppo come hai fatto notare ritorna subito lo stronzo di 

sempre

Si vede che lo fa tra una sniffata e l'altra




 





syntax error !!!!




 syntax error !!!! 



d'ho! cit.


 intendendo che stavano nella /testa/ del programmatore.



Bene, quindi non me li ricordo perche' non ci sono mai stati, ne ero 

ragionevolmente sicuro. Conseguentemente la tua domanda non ha risposta 

se non una qualche cagata, tipo quella degli array in assmbler, tra le 

tante che hai in testa.

Fai una cosa, declama una bella poesia.




Il 08/05/19 09:59, Dr.UgoGagliardelli ha scritto:


di solito non ci sono,a livello di linguaggio

ma ci sono,concettualmente







Ha detto d'ho, f'higa!





Sempre che abbia ben interpretato la punteggiatura strampalata, se gli 

array ci sono concettualmente, allora, altrettanto concettualmente, 

anche gli indici ci sono.

Rimane il fatto che si trattava di una domanda del cazzo.




Il 08/05/19 10:34, Dr.UgoGagliardelli ha scritto:


certo che ci sono anche gli indici,sempre concettualmente





Bene, allora lo devi comunicare ai membri della tua banda.


 ma ci sono,concettualmente



Ah beh. Rotfl diocane...


 se gli array ci sono concettualmente, 



ovvio. sono strutture atomiche. uno li porta sempre nel cuore.


 certo che ci sono anche gli indici,sempre concettualmente 



Seeeenti maaaa. I tests? Pure quelli ci sono, sempre concettualmente?



I tests no, ci sono i branchs, ovviamente concettuali.


 non ci sono mai stati, ne ero ragionevolmente sicuro. 



UGO PURE TE PERÒ. SO LOGICI, CI SONO

SO LOGICI



Ma come LOGICI? Non erano "concettuali" e forse anche "atomo"?


Il 08/05/19 11:38, Dr.UgoGagliardelli ha scritto:


Visto che mi hai messo in mezzo

se ti riferisci ad Alessandro, non  mi sembra che abbia sbagliato



sembra che un certo cime tempestose  abbia scritto:

 >>>>>>>> Il 08/05/2019 09:35, Roberto Tempesti ha scritto:

 >>>>>>>>> Nessuno , a parte i deficienti come te, accederà ad un elemento

 >>>>>>>>> dell'array attraverso l'aritmetica dei puntatori.

 >>>>>>>>> All'array si accede attraverso il suo indice, in tutti i

 >>>>>>>>> linguaggi è cosi'.



Ed Alessandro abbia risposto:

 >>>>>>> Per favore mi spieghi, visto che scrivi /tutti/ i linguaggi,

 >>>>>>>> nell'assembler che ho usato in cui non avevo indici ma solo

 >>>>>>>> puntatori

 >>>>>>>> come diavolo facevo a gestirli?



E tu hai risposto ad Alessandro:



 >Rinfrescami la memoria, perche' non ricordo proprio che nel linguaggio 

 >assembly si parli di array, verosimilmente neanche di indici.



Ora, non mi sembra che Alessandro abbia tirato fuori che array ed indici 

in Assembler esistessero per cui hai dato una risposta che e' come i 

cavoli a merenda





Ed Alessandro ha risposto:

 >In altro messaggio scrivevo che in assembler gli array erano logici

 >intendendo che stavano nella /testa/ del programmatore.



Sono d'accordo anche io e mi sembra anche tu



E tu, non contento abbia risposto:

 >>>>> Bene, quindi non me li ricordo perche' non ci sono mai stati, ne

 >>>>> ero ragionevolmente sicuro. Conseguentemente la tua domanda non ha

 >>>>> risposta se non una qualche cagata, tipo quella degli array in

 >>>>> assmbler, tra le tante che hai in testa.

 >>>>> Fai una cosa, declama una bella poesia.





Di nuovo come i cavoli a merenda

Alessandro ha solo chiesto a cime tempestose di specificare solo un po 

meglio in quanto a lui non risulta che nell'assembler da lui usato gli 

array esistessero (infatti ha affermato "in cui non avevo indici ma solo 

puntatori")





Se esiste qualcosa d'altro che dovrei sapere sei pregato di affermarla

Come avvocato difensore, l'accusa e' obbligata a presentare le prove a 

conoscenza.





















Bah.... ovviamente non sei degno di risposta.

Solo un consiglio. Non incartarti con le  Foibe.




Cara ha chiesto, in modo polemico, come avrebbe fatto a gestire gli 

indici di un array in assembly, per poi affermare che gli array in 

assemby esistevano solo nella sua testa, ovvero array "concettuali" 

secondo la tua definizione, per cui se nella sua testa esistevano gli 

array, che pensasse anche agli indici, per analogia indici 

"concettuali", sempre secondo la tua definizione.

Conseguentemente, non si tratta di "cavoli a merenda", ma di "dilettanti 

allo sbaraglio", una bella corrida atomica e concettuale.


Sono tutti SINONIMI


 atomica e concettuale.



Severo ma giusto.


 

Certo, come ho fatto a non pensarci! Ora abbiamo anche i "puntatori 

fontana", sempre sinonimo di "puntatore concettualmente spaziale".

Bella roba, la faccenda si allarga.



In una parola: "sinonimo". Che comprende praticamente tutto:


 Bah.... ovviamente non sei degno di risposta.



Certo, cosa vuoi mai rispondere: la merda piu' la si mescola e piu' puzza.

Pensa piuttosto agli indici concettuali, cosi' magari prendono forma e 

riuscirai a gestirli anche in assembly.


 conoscenza.



Beh, come avvocato difensore hai i tuoi bei crostini da rosicchiare, 

dati i clienti che ti trovi.


 riuscirai a gestirli anche in assembly.



Non ho problemi sull'indice concettuale se tu ne hai fatti vedere dal 

medico, uno qualsiasi.

In assembler (360) non esistevano e quindi se qualcuno /logicamente/

pensava ad essi potevano essere solo /concettuali/ .

La poesia e' cosa larga talvolta assume la forma canzone cun cui si

/canzona/ ?

"Un'idea, un concetto, un'idea

finché resta un'idea è soltanto un'astrazione..."



 pensava ad essi potevano essere solo /concettuali/ .



Quindi dei "sinonimi", dei "puntatori fontana".

S'era capito.

Un cazzo in realta', data la morfologia ed il dubbio posizionamento di 

soggetto, verbo e complemento.




 



faro anche io cosi >dora< in avanti


 

Questo deve essere il conte Mascetti che declama.

Complimenti! Grande interpretazione.



 Allora? Son degno o non son degno?



P.S.

Continui a non essere degno ma dall'alto della /MIA/

magnificenza lo concedo.



 



Solo per istruirti.

Le tue /porcate/ sollevano ricordi.

Quasi in forma di poesia.

C'era una /strana/ istruzione che da quegli stupidi che

programmavano in assembler era chiamata /tiritì/

(TRT=TranslateAndTest)

a cui si passava una specie di tabella (bidimensinale) e quella 

istruzione restituiva, data la prima colonna, la seconda

Normalmente si poneva il codice della provincia (il posto

in cui lavoravo aveva strani codici provincia, MI=49,RM=70,NA=51?)

Faceva tutto da sola, un poema!

Quando sorgevano problemi si complicati il consiglio immancabile

era:fa na tiritì.



Questa risposta non e' neanche per te ma per qualche amante

di storia ed aneddoti ove passasse qui per caso.



 >dora< in avanti 

ok ma >cara< da dietro risparmiacelo però, eh


 Quindi dei "sinonimi", dei "puntatori fontana". 



Come spumeggianti fontane da cui scorre l'atomica conoscenza di...


 si



no. non ho mai scritto "Vai avanti che mi vien da ridere". dimostralo


 Ora mi spieghi, ammettendo che io mescoli merda



Non ce n'e' bisogno, basta che ti muova, l'effetto e' il medesimo.








 



che non ha niente a che fare con il post




 





IL pirlotto ha fatto fatto una affermazione precisa su un linguaggio 

preciso

Le mie risposte sono su quel tipo di macchina proprio per quello

Se il pirlotto avesse fatto una affermazione sulla panda (automobile) 

perche' dovrei discutere di 127 (automobile)

E poiche la discussione e' sulla panda significa che non conosca la 127 ?

Ovviamente e' irrilevante in questo caso cosi come un  meccanico non 

crede ovviamente che la panda sia tutto il parco macchine.




 che non ha niente a che fare con il post 



UNA SVINCOLATA È PER SEMPRE cit.


 Le mie risposte sono su quel tipo di macchina



di continui a non averci capito un cazzo.


 preciso



LOL :D Ma sei ancora qua a scrivere? :D



Pirlotto ci chiami TUO PADRE e 3/4 della TUA FAMIGLIA, capito, COGLIONE? 



Sono state fatte affermazioni che non riguardavano "il linguaggio preciso": si parla di array e di memoria contigua, COGLIONEEEE!!!!!!



Sei TU, COGLIONE INCOMPETENTE, che riporti tutto al C e C++, perche` sono gli unici due piccoli mondi che conosci. In realta` non li conosci neanche, come ben dimostrato in ogni messaggio che scrivi.



Il problema e` che NON SAI UN CAZZO, non hai i mezzi per discutere NULLA.



DEMENTE!



Non lo avevo ancora letto!

Bello!

Cime Tempestose, colto, appropriato, ironico quel che basta.

La faro' mia senza se e senza ma!



Se sono membro della tua /banda/ io suono il clarinetto.

Quello che fa "Firuli' firula'"

Spero tu non suoni il trombone, ti vedo da /vaiolin/ ;-), tali strumenti

lasciamoli ad altri con piu' /fiato/


Non avrei saputo fare di meglio.

Grazie!



Rinnovo lo /chapeau/ per Cime Tempestose!



 allo sbaraglio", una bella corrida atomica e concettuale.



Fermo restando che ora mi dovresti spiegare /ontologicamente/ perche'

non sono ammissibili /cavoli a merenda/ (questo solo per darti via di 

uscita).

La corrida e' atomica. E' toro contro tutte le malefatte del mondo

compresi /toreri camomillo/  come te.



Il 08/05/2019 21:23, Dr.UgoGagliardelli ha scritto:


aha....aha....ahhhhahhhhhahhhaaaaaaaaaaaaaaaaaaaaaa!

Porca miseria ho schizzato dappertutto. Ora mi tocca pulire!



 dati i clienti che ti trovi.



Crostini? Crostini!

I fondamentaliiiiiiiiiiiiiiiiiiiiiiiii!

Betulle! So betulle!

E le conosci molto bene!



 



La cosa meravigliosa e' che /concettualmente/ anche tu esisti.



 I tests no, ci sono i branchs, ovviamente concettuali.



Ma dove sei andato a scuola?

i /branchs/ sono l'unica cosa non concettuale.

Somo rami nodosi (fascista all'opera) con cui vi si dovrebbe

randellare in continuita' come qualsiasi array che si rispetti.




Tu hai qualche problema.

In borgata (mi pare hai acquisito la mia provenienza) direbbero:

"Fai schifo ar cazzo"

Figurati se perdo tempo a sodomizzarti!

Sei inutile.

Testa non ne hai, il pisello e' scomparso (lo cerchi sempre)

Inutile! Completamente inutile!



 lasciamoli ad altri con piu' /fiato/



Lei suona il clarinetto lui la tromba.

Regolare.


 Ma dove sei andato a scuola?

Hai ragione, avrei dovuto virgolettare, visto che ho citato il tuo 

maestro, ma visto che replicavo a chi tali citazioni sarebbero risultate 

piu' che evidenti, mi e' sembrato pleonastico.