SORU
16 Mayıs 2013, PERŞEMBE


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
16 Mayıs 2013, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Official Android Tips

    Official And

    23 EYLÜL 2009
  • Dellbear816

    Dellbear816

    4 Mart 2008
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011