Всем привет есть 2 вопроса:
Почему в аргументах функции calc приходится писать именно ссылку на указатель Test *& test, а не Test * test?
#include <iostream>
using namespace std;
struct Test
{
int a;
int b;
};
**// Эта функция будет в dll**
void calc(Test *& test, unsigned int &sizeTest)
{
sizeTest = 3;
test = new Test[sizeTest];
for (uint i = 0; i < sizeTest; i++)
{
test[i].a = i;
test[i].b = i;
}
}
int main()
{
Test *test = NULL;
unsigned int sizeTest = 0;
calc(test, sizeTest);
cout << sizeTest << endl;
for (uint i = 0; i < sizeTest; i++)
{
cout << test[i].a << endl;
cout << test[i].b << endl;
}
// Корректно ли тут очищать память, выделенную в другой функции?
delete[] test;
return 0;
}
Без ссылок ваша функция выглядела бы так:
void calc(Test ** test, uint * sizeTest)
{
*sizeTest = 3;
*test = new Test[*sizeTest];
for (uint i = 0; i < *sizeTest; i++)
{
(*test)[i].a = i;
(*test)[i].b = i;
}
}
// использование
Test * array = nullptr;
uint size = 0;
calc(&array, &size);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
ПриветствуюЕсть задача: при движении мыши в окне должен двигаться статик внутри данного окна
Здравствуйте, имеется массив обьектов static vector<MobilePhone*> devices;Как можно записать все что внутри в бинарный файл, чтобы при повторном запуске...
В списке нужно поменять местами второй элемент и максимальныйЯ сделал, но надо упростить код