| ne_viens 
 Advanced Member
 | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору GCC умеет на стеке динамически выделять, оказывается:
 
 Код:
 | mov     eax, [rbp+n]    ; <<<<<<<<<<<<<<< N input
 cdqe
 sub     rax, 1
 mov     [rbp+var_40], rax
 mov     rdx, rax
 add     rdx, 1
 mov     r14, rdx
 mov     r15d, 0
 mov     rdx, rax
 add     rdx, 1
 mov     r12, rdx
 mov     r13d, 0
 add     rax, 1
 shl     rax, 2
 lea     rdx, [rax+3]
 mov     eax, 10h
 sub     rax, 1
 add     rax, rdx
 mov     ecx, 10h
 mov     edx, 0
 div     rcx
 imul    rax, 10h
 sub     rsp, rax        ; <<<<<<<<<<<<<alloc on stack dynamically
 mov     rax, rsp
 add     rax, 3
 shr     rax, 2
 shl     rax, 2
 mov     [rbp+var_48_array_a_pointer], rax
 
 
 | 
 
 С одной стороны это хорошо- это гораздо быстрее malloc(), с другой- плохо, так как самому надо следить за размером стека, размером массивов и портабельностью на другие компиляторы, которые этой фишки не поддерживают.
 
 |