170 похожих чатов

Расскажите, если через new выделил массив в куче, и new

вернул указатель, то получив этот указатель, можно ли узнать во первых массив ли там или просто единичная ячейка памяти и второй вопрос можно ли узнать количество выделенных ячеек памяти. Я просто где то читал, что есть разница между массивом как таковым и указателем на массив (хотя индекс нулевой ячейки возвращает указатель). И вот что я читал, что якобы имея на руках указатель на массив (по факту это будет указатель на тип), ты не можешь понять массив там или просто ячейка памяти и соотвественно не можешь понять сколько там ячеек памяти. Или все таки можно?

10 ответов

0 просмотров

Нет и нет

можно посмотреть по типу указателя

вот-вот. если unique_ptr<T>, то объект один, а если unique_ptr<T[]> или vector, то массив их а если что-то ещё, то переделывать

Ivan Sokolov
вот-вот. если unique_ptr<T>, то объект один, а есл...

так чтобы это использовать ты должен знать массив это или 1 элемент

Если быть уверенным, что это является массивом, то узнать количество элементов можно, хотя это и не гарантированно, как я понимаю

The Pressbraker- Автор вопроса
Илья
Если быть уверенным, что это является массивом, то...

Имея только в наличии указатель на тип данных, что лежит в массиве?

The Pressbraker
Имея только в наличии указатель на тип данных, что...

Открываешь исходники malloc или аналога, что там у тебя и смотришь, где он хранит размеры выделяемого. Тоже и с new и любыми аллокаторами. Читаешь размер оттуда.

The Pressbraker- Автор вопроса
Илья
Да

А как? Я вот тут что то видел, кстати, но не понял. Слишком сложно для меня. https://thomwiggers.nl/teaching/hacking-in-c-2020/

The Pressbraker
А как? Я вот тут что то видел, кстати, но не пон...

Все, что содержит в названии "hacking" лучше не тащить в рабочий код)

Похожие вопросы

Обсуждают сегодня

у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
1
читать файл максимально быстро? странный вопрос))
zamtmn
50
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
11
Господа, как быстро вставлять множество постов через wp_insert_post? использую wp_defer_term_counting wp_defer_comment_counting SET autocommit = 0 pre_wp_unique_post_slug но ...
Александр
4
TCodePointer = record cp: CodePointer; name: string; cnt: Integer; next: TCodePointerArray; // этот тип ещё неизвестен end; TCodePointerArray = array of ...
notme
9
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Please any new resources to learn flutter?
Gbonafha Ayehnor
8
Карта сайта