Ссылка, которую я привел, одинаково справедлива как для C, так и для C++.
Вот именно! И везде тоже самое. Поэтому C++ воспринимается как расширение С, а не как другой язык. Аналогично Pascal и OO Pascal - это два разных языка?
Какое отношение имеет неправильное задание размера во втором параметре cudaMalloc к sizeof(int**) != sizeof(void**)? Внимательно прочитайте, пожалуйста, текст по вышеприведенной ссылке.
Прежде всего, где в CUDA-примерах Вы нашли, чтобы размер в cudaMalloc задавался через sizeof(void**)?
А текст не только прочел, но частично и процитирую:
Цитата:
To appreciate the problem with void ** more clearly, compare the situation to an analogous one involving, say, types int and double, which probably have different sizes and certainly have different representations. If we have a function
void incme(double *p)
{
*p += 1;
}
then we can do something like
int i = 1;
double d = i;
incme(&d);
i = d;
and i will be incremented by 1. (This is analogous to the correct void ** code involving the auxiliary vp.) If, on the other hand, we were to attempt something like
int i = 1;
incme((double *)&i); /* WRONG */
(this code is analogous to the fragment in the question), it would be highly unlikely to work.
Тут функция incme
изменяет значение переменной, находящейся по указанной ссылке, а cudaMalloc всего лишь выделяет заказанный объем памяти на устройстве. В этом принципиальная разница. Очевидно, что целое и вещественное представляются в машине по-разному, занимают разный объем памяти, и чтобы увеличить их на единицу, действовать надо по-разному. А вот чтобы выделить память под целое и под вещественное, надо просто знать их размеры. Одни и те же ящики можно использовать для хранения как риса, так и гречки: зная объемы ящика и имеющейся крупы, можно легко определить, сколько нужно ящиков, а какого типа эта крупа (рис, гречка, перловка и т.д.), нас при этом совершенно не интересует.
(BTW Амперсанд в цитатах странно воспроизводится.)
-- Сб ноя 08, 2014 11:52:36 --BTW мне не ответили:
Всегда ли перед делением нужно проверять, что делитель не ноль?
Почему в C/C++ допустимо while (i=j)
-- Сб ноя 08, 2014 11:45:29 --Да, приношу извинения, про Мейерса это я зря.
И про Паскаль зря