ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
8 июля
249339 Топик полностью
ReAl (21.04.2011 01:19 - 01:24, просмотров: 96) ответил POV на Если обязательно освобождалась, то вообще бы ничего не работало - new вне процедуры не поставишь.
Конечно же обязательно не освобождается. А вот по второму пункту -- да запросто. #include <stdio.h> char *newbuf = new char[42]; int main() { newbuf[0] = 'H'; newbuf[1] = 'i'; newbuf[2] = '!'; newbuf[3] = 0; puts(newbuf); } .file "ne.cpp" .text .p2align 4,,15 .type _GLOBAL__I_newbuf, @function _GLOBAL__I_newbuf: ; ---------------- сгенерирована функция вызова new для инициализации newbuf subq $8, %rsp movl $42, %edi ; ---------------------- вот его длина передаётся call _Znam movq %rax, newbuf(%rip) addq $8, %rsp ret .size _GLOBAL__I_newbuf, .-_GLOBAL__I_newbuf .section .ctors,"aw",@progbits .align 8 ; --------------------- указатель на сгенерированную функцию .quad _GLOBAL__I_newbuf ; --------------------- помещён в таблицу конструторов .text .p2align 4,,15 .globl main ; ------------------ ну main опускаем .globl newbuf .bss .align 8 .type newbuf, @object .size newbuf, 8 newbuf: .zero 8 ; -------------------- а это сам _указатель_ newbuf