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

  • Bratayley

    Bratayley

    30 Aralık 2010
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013