Nano Hash - криптовалюты, майнинг, программирование

Получить длину массива с помощью указателя?

Я ищу способ получить длину массива для адреса указателя. Пример:

int *a = (int*)malloc(sizeof(int)*2);// will be an array. 
*(a+0) = 1; // values of the array
*(a+1) = 2;

Есть ли способ определить, сколько памяти выделяется этим указателем? Мы рекомендуем, чтобы в этом массиве не было пустых элементов. Если я знаю, сколько памяти выделено, я смогу получить размер массива (разделив по sizeof (int));

08.02.2015

  • Более обычный способ написать *(a+1) - a[1] 08.02.2015
  • Нет. a - это указатель. Единственный переносимый способ узнать размер блока памяти, на который он указывает, - это сохранить этот размер. 08.02.2015
  • Я знаю. Но такой способ обращения помогает понять, что такое массив. Спасибо. Можете ли вы также сказать мне, почему используется size_t в качестве типа данных для этих блоков памяти (для его размера)? 08.02.2015
  • @NumberTheory Массив - это просто элементы, расположенные в памяти непрерывно. В этом нет ничего особенного. 08.02.2015
  • Комментарий к массиву вводит в заблуждение, на самом деле это всего лишь 2 * sizeof (int) байта памяти. Вы также можете использовать его для структуры с int x, y в качестве массива. 08.02.2015
  • size_t используется, потому что он, в отличие от int, гарантированно будет достаточно большим для любого блока памяти, который может быть выделен. В этом нет ничего особенного, это просто целое число без знака подходящего размера. 08.02.2015
  • Спасибо. Это очень помогло. Можете ли вы добавить его как отдельный ответ, чтобы я мог отметить его как решенный? 08.02.2015
  • Ответ на Что такое size_t ... находится здесь: stackoverflow.com/q/2550774/694576 Пожалуйста, проведите небольшое исследование, прежде чем задавать вопросы. 08.02.2015

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..