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

  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • midomansour

    midomansour

    19 EYLÜL 2009
  • SHAYTARDS

    SHAYTARDS

    1 EKİM 2008