"char buf[n];" - Можно ли так объявлять массив? И что означает ошибка: "no loadable sections found in added symbol-file system-supplied DSO at ..."?
Начну с кода:
#include <iostream>
#include <malloc.h>
using namespace std;
void testCore(char * buf, int n)
{
if(n<2)
return;
for(int i=0;i<n;++i)
buf[i]='A'+(i%26);
buf[n-1]=0;
cout<<buf;
}
void test(int n)
{
char buf[n];
//char * buf = (char*)malloc(n);
testCore(buf, n);
//free(buf);
}
int main(int argc, char *argv[])
{
int n;
cin>>n;
// test(10);
// test(100);
// test(1000000);
test(n);
return 0;
}
Собственно говоря тестовая программка для собственного понимания. Мне казалось, что объявлять массив так - "char buf[n];" - нельзя. НО! программа работает вполне стабильно, за исключением ошибки - no loadable sections found in added symbol-file system-supplied DSO at 0x7ffdd2bee000 Кто может помочь с разъяснением?
Ответы (1 шт):
В С теоретически можно (в том плане, что последние стандарты это поддерживают, но не все компиляторы реализуют такую поддержку).
В С++ теоретически нельзя — в стандарте такой возможности нет. Но на практике тот же GCC (G++) предоставляет соответствующее расширение.
Соответственно, вопрос, использовать или нет — это вопрос переносимости вашего кода.