Diferença [Record, Struct, Estrutura] X Objetos Em memória

Pessoal boa noite,

tenho algumas dúvidas, não achei nenhuma outra parte no fórum referente a esse assunto,
acredito que isso tem mais a ver com ED do que com Arquitetura mas la vamos nós…

minha dúvida é a seguinte, são 2 ou 3 dúvidas…rsrsrs…
Na realidade esses conceitos não ficaram claros para mim, ainda…

Eu irei fazer algumas afirmações e gostaria de saber se elas também estão erradas, vamos lá.

Estruturas, ou structs, presentes em linguagem C, ocupam espaço em memória consecutivos, assim como os array’s… certo?
A diferença entre elas e os arrays é que a memória alocada para as estruturas ficam no contexto da aplicação, já que é apenas um amontoado de variáveis primitivas certo? bom, até hoje eu não vi um struct com algum atributo object nele…
Essa afirmação está correta? incorreta? parcialmente correta?

Eu agora estou partindo do princípio que a minha afirmação está correta, e irei perguntar:

Qual a diferença dos objetos instanciados, em memória, e os structs?

Aquilo que no contexto de aplicação fica apenas a referência, e o objeto ficam em algum lugar da memória gerênciado pelo SO é verdade??

Se sim, como é gerenciada as listas ou os “objetos compostos”, quero dizer, objetos que possuem outros objetos como atributos da classe??

Os atributos dos objetos ficam acoplados?

por exemplo uma classe x, com atributos y,z (int) ocupará apenas 2 words, e consecutivas??

Existem algum livro bom onde eu possa aprender isso, ou uma documentação, qualquer coisa???

matheuslf, a grande diferença deles é que uma Struct funciona como variável primitiva, ou seja ela é alocada na stack ao invés da heap. A stack é uma área de memória lifo, por causa disso é mais rápida que a heap que é responsável por guardar “objetos” alocados dinâmicamente como classes.

entendi, mas em relação da disposição “física”, o mapeamento da memória, os atributos são armazenados consecutivamente?
e a sobre a questão de referência de referencias ou ponteiros para ponteiros?? onde uma classe compõe uma outra, como funciona?

essa parte da gerência da memória eu acho que eu entendi agora, eu estive lendo um livro [C Total e Completo] aqui do autor Herbert Schildt e ele explica do heap stack variáveis globais e código do programa, que são as 4 regiões, mas ele fala bem por cima…

É que o java não permite a aritmética de ponteiros também, então acho que não vai dar pra fazer o que eu quero nessa linguagem, mas eu vou tentar em C#… pois se não me engano dentro de um bloco unsafe ele permite vc fazer isso…

eu quero entender essa parte pois quero tentar fazer uma cópia de um objeto em memória, então eu iria verificar endereço por endereço pegar o valor e duplicar o objeto em um outro lugar, isso é possível, será?? possível eu acho que é…lógico…tudo é possível…mas o SO deixa eu fazer isso? eu to viajando mto??

Nobody??