Size: a a a

IT KPI C/С++ ХВ (хорошо, что не UB)

2020 February 26

AP

Alexander Pavlyuchuk in IT KPI C/С++ ХВ (хорошо, что не UB)
András
Wargaming?
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
#include <stdio.h>

void func(int n) {
 char arr[n];
 // ...
}

int main() {
 int n;
 scanf("%d", &n);
 func(n);

 return 0;
}


Здравствуйте, это легально в стандрате C99?
источник

A

András in IT KPI C/С++ ХВ (хорошо, что не UB)
В gcc -- так, в решті -- ні
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
ясно, спасибо
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
а gcc берёт эту память с кучи?
источник

A

András in IT KPI C/С++ ХВ (хорошо, что не UB)
На стеці
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
хм
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
источник

ВИ

Владимир Ильич in IT KPI C/С++ ХВ (хорошо, что не UB)
нашла, спс
источник

AM

Alex Master in IT KPI C/С++ ХВ (хорошо, что не UB)
András
В gcc -- так, в решті -- ні
Всмысле, кланг же может на изи
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
Владимир Ильич
#include <stdio.h>

void func(int n) {
 char arr[n];
 // ...
}

int main() {
 int n;
 scanf("%d", &n);
 func(n);

 return 0;
}


Здравствуйте, это легально в стандрате C99?
легально в Си, запрещено в крестах
источник

G

GNU/Vsevolod.rs in IT KPI C/С++ ХВ (хорошо, что не UB)
Till Schneider
легально в Си, запрещено в крестах
А как это работает по простому? А то я асм не умею читать.
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
GNU/Vsevolod.rs
А как это работает по простому? А то я асм не умею читать.
да там просто указатель на стек смещается
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
под размер массива
источник

G

GNU/Vsevolod.rs in IT KPI C/С++ ХВ (хорошо, что не UB)
Till Schneider
да там просто указатель на стек смещается
Так а как он узнает, сколько под стек выделить?
источник

G

GNU/Vsevolod.rs in IT KPI C/С++ ХВ (хорошо, что не UB)
Оно же динамическое
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
GNU/Vsevolod.rs
Так а как он узнает, сколько под стек выделить?
ну в рантайме
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
GNU/Vsevolod.rs
Оно же динамическое
ты в динамике можешь создавать и удалять переменные на стеке
источник

TS

Till Schneider in IT KPI C/С++ ХВ (хорошо, что не UB)
for(int i =0; i < 10; ++i)
{
 int a;
}
источник

G

GNU/Vsevolod.rs in IT KPI C/С++ ХВ (хорошо, что не UB)
Till Schneider
ты в динамике можешь создавать и удалять переменные на стеке
Да, но ведь макс размер стека высчитывается на компиляции
источник