От чего у меня выделяется память только для одного элемента?
...
double * dd = (double*)malloc(size*sizeof (double));
std::cout << "multiple void dd " << sizeof (dd)/sizeof (double) << " size "<< size <<std::endl;
...
run
multiple void dd 1 size 2625
Вторая реализация с исправлением:
...
double * dd = new double (size);
free(dd);
double dd1 = *dd;;
std::cout << "multiple void dd1 " << sizeof (dd1)/sizeof (double) << " size "<< size <<std::endl;
...
run
multiple void dd1 1 size 2625
У вас выделяется память для size
элементов, которое, судя по выводу, у вас равно 2625.
Если же вас интересует, почему
sizeof (dd)/sizeof (double)
дает 1 - так это потому, что размер указателя (dd
) в 64-разрадной программе равен 8 и совпадает с размером double
. Была бы 32-разрядная программа - было бы значение 0...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Написал код для создания числовой пирамиды на N строк, где в каждой строке нумерация идет от 1 до N строки через пробелВсе компилируется и работает,...
Я не знаю баг это или фича, но Visual Studio C++ (VS 141) не подсвечивает ошибки если функция использует шаблонные параметры, да и вообще работает с шаблонном
Предположим, есть программа, которая должна в зависимости от системы Linux/Windows запускать исполняемый файлЕсть ли в стандартной библиотеке...