C/C++ RAM'lerde adres mantığı ve C++ pointerlar

Algılama falan yok. O bir pointer. Veri tipi integer Pointer'ı ya da her ne Pointer'ı ise o. +, ++ vb. pointer aritmetiği yapılan operatörler adlarından da anlaşılabileceği gibi operatörler. O şekilde tasarlandıkları için o şekilde davranıyorlar.

Pointer kullanılan her örneği gözden geçirerek öğrenemezsiniz. Zamanla oturur. Bu kadar deşmenize gerek yok.

Class olduğu için member variable'larına bakıyor sizeof operatörü.

Std: String nesneleri;
  • Char* data.
  • Std: Size_t size.
  • Std: Size_t capacity.
  • Bir de herhalde referans sayısını tutuyor (herhalde ki yüzden 32 çıktı).
Tipler birebir aynı olmayabilir. IDE kullanıyorsanız kütüphane içinde arayabilirsiniz. Şu anda bende kurulu değil. Boyut derleyiciye göre değişiklik gösterebilir.
Kod:
#include <iostream>
#include <string>

int main() {
 std::cout << sizeof std::string{ "X" } << '\n'; // 32.
 std::cout << sizeof std::string{ "XY" } << '\n'; // 32.
 return 0;
}

Buna ek olarak alignment var ama standart kütüphanede onlar güzelce ayarlanmış durumda.

Şunu da okuyucuya ödev olarak bırakayım.
Kod:
#include <iostream>

typedef struct A {
 char a;
 char b;
 char c;
 char d;
 int e;
} A;

typedef struct B {
 char a;
 char b;
 char c;
 int e;
 char d;
} B;

int main() {
 std::cout << sizeof A() << '\n';
 std::cout << sizeof B() << '\n';
 return 0;
}

Bunlar bulunduğunuz aşamada işinize yaramayacak şeyler. Bu tarz soruları soracak duruma geldiğinizde zaten İngilizce şekilde Google amcaya sorabilecek hale de gelmiş olmanız gerekiyor. Daha geniş kaynak sizi bekliyor.

Diğer arkadaş niye heap ile kafayı bozmuş anlamadım.

Teşekkür ederim açıklamalar için. Dediğiniz gibi çok deşmeyeceğim. String ile ilgili bir aşinalığım olmuş oldu.

Sanırım verdiğiniz örnek bilgisayarların X86 veya X64 işletim sistemler mantığıyla ilgiliydi, öyle hatırlıyorum. RAM'lerin daha verimli çalışması için bazı boşluklar veriliyor diye düşünüyorum. Tam olarak hakim değilim.

Bu dersi bitirdikten sonra kendimi geliştirmem adına C++ ile ilgili tavsiyeleriniz var mıdır? Kendimi birçok yönde geliştirmek istiyorum. Özellikle C++ ile ilgili proje yapıp bunu yaparken de gelişmek isterim ama ne yapılabilir C++ ile tek başına pek fikrim yok.
 

Geri
Yukarı