вернул указатель, то получив этот указатель, можно ли узнать во первых массив ли там или просто единичная ячейка памяти и второй вопрос можно ли узнать количество выделенных ячеек памяти. Я просто где то читал, что есть разница между массивом как таковым и указателем на массив (хотя индекс нулевой ячейки возвращает указатель). И вот что я читал, что якобы имея на руках указатель на массив (по факту это будет указатель на тип), ты не можешь понять массив там или просто ячейка памяти и соотвественно не можешь понять сколько там ячеек памяти. Или все таки можно?
Нет и нет
можно посмотреть по типу указателя
вот-вот. если unique_ptr<T>, то объект один, а если unique_ptr<T[]> или vector, то массив их а если что-то ещё, то переделывать
так чтобы это использовать ты должен знать массив это или 1 элемент
Если быть уверенным, что это является массивом, то узнать количество элементов можно, хотя это и не гарантированно, как я понимаю
Имея только в наличии указатель на тип данных, что лежит в массиве?
Открываешь исходники malloc или аналога, что там у тебя и смотришь, где он хранит размеры выделяемого. Тоже и с new и любыми аллокаторами. Читаешь размер оттуда.
А как? Я вот тут что то видел, кстати, но не понял. Слишком сложно для меня. https://thomwiggers.nl/teaching/hacking-in-c-2020/
Все, что содержит в названии "hacking" лучше не тащить в рабочий код)
Обсуждают сегодня