böyle kod yok:Dizisi
#include <iostream>
int main()
{
int size;
std::cin >> size;
size = size + 1;
int tab3[size];
tab3[0] = 5;
std::cout << tab3[0] << " " << sizeof(tab3) << std::endl;
return 0;
}
sonucudur:
$ g++ prog.cpp -o prog -Wall -W
$ ./prog
5
5 24
Neden bu kod bile derler? Dizinin uzunluğu sabit bir değişken mi olmalı?
G ++ sürüm 4.4.5 kullandım.
+1 için daha iyidir, ben 'nineof()' in de sabit olmadığı konusunda hiçbir fikrim yoktu. Eğer 'sizeof()' i kullanmayı düşündüğümde bunun bir sebepten dolayı başarısız olmasını beklerdim. –
@ MichaelKrelin-hacker: Yine, bir uzantı olarak ... VLA'lar bir 'timeeof()' çalışma zamanı gerektirir, bu yüzden C99 standardının bir parçasıdır. Bu sadece bir C++ türü değil. 'Decltype' ve tüm bunları düşünün ... –
Bu, mevcut değil gibi görünüyor * var * yığın üzerinde bellek ayırma standart yöntem. Yerleşim-yeni ile nesne yapımını halledebiliriz, fakat C++ 'da yığında değişken miktarda ham bellek elde etmek imkansızdır. –