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

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • Best Quality Cartoons

    Best Quality

    10 ŞUBAT 2014
  • gsipek

    gsipek

    20 Temmuz 2007