Bilgisayar belleğinde '' işaretçi depolanır?
Tam olarak nerede bu 'bellekte saklı işaretçi? Üzerine ayrılan, veri kesimi yığın veya yığın mı?
#include <iostream>
using namespace std;
class ClassA
{
int a, b;
public:
void add()
{
a = 10;
b = 20;
cout << a << b << endl;
}
};
int main()
{
ClassA obj;
obj.add();
return 0;
}
Yukarıdaki kodu üye add()
fonksiyon arıyorum ve alıcı nesne örtülü olarak geçirilen 'this' işaretçi. Nerede this
hafızada saklanır?
CEVAP
En kolay yol her zaman otomatik olarak geçirilen gizli ekstra bir argüman olarak this
.
Yani kurgusal bir yöntem gibi:
size_t String::length(void) const
{
return strlen(m_string);
}
aslında daha fazla bu başlık altında böyle
size_t String__length(const String *this)
{
return strlen(this->m_string);
}
ve bir çağrı gibi
{
String example("hello");
cout << example.length();
}
bir şey gibi olur:
cout << String__length(&example);
Yukarıdaki dönüşüm, benim açımdan biraz daha net yapmak için umarım basitleştirilmiş olduğunu unutmayın. Aşağıdaki yorum doldurmaya gerek "whaaa, nerede yöntemi aşırı değil sıralanırken?"-yazın itiraz ediyorum, lütfen. :)
İçine soruya dönüştüren "nerede değişkenler saklanır?", ve cevap tabii ki "değişir". :)
Genellikle yığında ama kayıtlar da olabilir, ya da derleyici olarak gördüğü diğer mekanizma hedef mimari için iyidir.
Std::ham veri, vektör işaretçi?...
IEnumerable ile birden fazla liste kav...
Ne Uygulamaları mevcuttur İşaretçi Akı...
Javascript işaretçi/referans delilik. ...
'' bir işaretçi neden ve nas...