powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Псевдонимы типов
5 сообщений из 30, страница 2 из 2
Псевдонимы типов
    #39646799
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Феерично!
...
Рейтинг: 0 / 0
Псевдонимы типов
    #39646815
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Quartz,
...
Рейтинг: 0 / 0
Псевдонимы типов
    #39646910
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestNekZ
Код: plaintext
1.
arraytype *arrptr = reinterpret_cast<arraytype *>(new arraytype);

На помойку

http://eel.is/c draft/expr.new#1.sentence-8If it is an array, the result of the new-expression is a pointer to the initial element of the array. http://eel.is/c draft/basic.compound#4.sentence-2 http://eel.is/c draft/basic.compound#4.note-1 If two objects are pointer-interconvertible, then they have the same address, and it is possible to obtain a pointer to one from a pointer to the other via a reinterpret_­cast. [Note: An array object and its first element are not pointer-interconvertible, even though they have the same address. — end note]
Если ты не понял, ТС хотел чтобы это компилировалось без указания размера. Я ему в этом помог.
...
Рейтинг: 0 / 0
Псевдонимы типов
    #39646952
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ржавый гвоздьПри этом arr создается без проблем, а вот оператор new обязательно требует указать какое-нибудь число в размерность. Причем, как я вижу в отладчике, по факту все равно создается массив именно размера 20, независимо от того, что за число написано в new.
Ты гонишь. Зависимость от числа есть.
Для кода
Код: plaintext
1.
2.
3.
typedef int arraytype[20];
arraytype* arrptr1 = new arraytype[20];
arraytype* arrptr2 = new arraytype[10];


генерируется
Код: plaintext
1.
2.
3.
4.
5.
6.
  mov edi, 1600
  call operator new[](unsigned long)
  mov qword ptr [rip + arrptr1], rax
  mov edi, 800
  call operator new[](unsigned long)
  mov qword ptr [rip + arrptr2], rax


NekZЕсли ты не понял, ТС хотел чтобы это компилировалось без указания размера. Я ему в этом помог.ТС не понимает, что происходит и поэтому хочет непонятно что.
Ты тоже не понимаешь, что происходит и поэтому от твоей «помощи» больше вреда.
...
Рейтинг: 0 / 0
Псевдонимы типов
    #39646987
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestТС не понимает, что происходит и поэтому хочет непонятно что.
Ты тоже не понимаешь, что происходит и поэтому от твоей «помощи» больше вреда.
Отлично понимаю, что array-type и raw-ptr на первый элемент -- вещи разные семантически и именно поэтому было рекомендовано использовать std::array, читай выше.
Получаем из
Код: plaintext
1.
2.
3.
    using arraytype =  std::array<int, 20>;
    arraytype *arrptr = new arraytype;
    arraytype *arrptr2 = new arraytype[20];


GCC trunk -O0 mov edi, 80
call operator new(unsigned long)
mov QWORD PTR [rbp-8], rax
mov edi, 1600
call operator new[](unsigned long)
mov QWORD PTR [rbp-16], rax


Никаких сишный непотребств для любителей обмазываться несвежими указателями.
/thread
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Псевдонимы типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]