SORU
10 HAZİRAN 2013, PAZARTESİ


Ne zaman "ölü" bir nesne için bir işaretçi erişim için geçerli mi?

İlk olarak, gayet açığım bendeğilgeçersiz işaretçi kaldırma hakkında konuşuyor!

Aşağıdaki iki örnek düşünün.

Örnek 1

typedef struct { int *p; } T;

T a = { malloc(sizeof(int) };
free(a.p);  // a.p is now indeterminate?
T b = a;    // Access through a non-character type?

Örnek 2

void foo(int *p) {}

int *p = malloc(sizeof(int));
free(p);   // p is now indeterminate?
foo(p);    // Access through a non-character type?

Soru

Yukarıdaki örneklerin tanımsız davranış çağırmak mı?

Bağlam

Bu soru this discussion yanıt olarak ortaya atılır. Öneri, örneğin, işaretçi değişkenler donanım bir özel durum neden olabilir ki 86 parça kayıtlar, üzerinden bir işleve geçirilebilir.

C99 standardı, aşağıdaki (vurgu benim) öğreniyoruz:

[3.17]belirsiz değer- tanımlanmamış bir değer veya bir yatuzak gösterimi

ve sonra:

[6.2.4] p2Bir işaretçi değeri olurbelirsizne zaman işaret ettiği nesnenin ömrünün sonuna ulaşır.

ve sonra:

[6.2.6.1] p5Belirli nesne temsilleri nesne türü değeri temsil etmesi gerekmez. Bir nesnenin saklı değer böyle bir temsili vardır ve karakter tipi yok lvalue bir ifade ile okunurdavranışı tanımlı değil. Eğer böyle bir beyan veya karakter türü yok lvalue bir ifade ile nesnenin bir parçası değiştiren bir yan etkisi tarafından üretilen, davranışı tanımsızdır. Böyle bir temsil denirtuzak gösterimi.

Bu arada alarak, biz kısıtlamalar "ölü" nesneleri için erişim işaretçiler var mı

Ek

Yukarıda C99 standardı alıntı yaparken, eğer davranışları C standartları herhangi bir farklılık olup olmadığını bilmek ilgi duyarım.

CEVAP
10 HAZİRAN 2013, PAZARTESİ


Örnek 2 geçersiz. Eğer söz konusu analiz doğru.

Örnek 1 geçerlidir. Yapısı, hiç değilse kendi üyelerinden biri değilse bile, bir tuzak gösterimi tutar. Bu yapı, atama, tuzak beyan sorunlara neden olacak bir sistem üzerinde, bytewise bir kopyasını yerine-üye-üye kopya olarak uygulanması gerektiği anlamına gelir.

Türleri 6.2.6 gösterimi

6.2.6.1 Genel

[...] 6 yapı veya birlik, bir nesnenin değerini asla t a rap. yapı veya Birliği üyesi değerini nesne bile olabilir gösterimi tuzak bir temsili.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blendtec

    Blendtec

    30 EKİM 2006
  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • warningthepeople

    warningthepe

    21 EYLÜL 2011