Тип void
не имеет размера. Поэтому вы не можете использовать void *
для очистки массива. Вы не можете разыменовать этот тип по той же причине.
Вы должны привести к указателю с определенным типом:
void clean_buffer(void *ptr, size_t n)
{
unsigned char *my_ptr = ptr;
for (int i = 0; i < n; i++)
my_ptr[i]=0;
}
Вы должны позаботиться о том, чтобы размер, передаваемый вашей функции, не мог быть числом или массивами, потому что компилятор не может выполнять арифметику указателей с [114 ] указатели. А для размеров вы должны использовать size_t
Вместо этого вы должны передать размер массива в байтах:
int main(void)
{
float *pf;
int *pi;
pf = malloc(10*sizeof(float));
pi = malloc(10*sizeof(int));
clean_buffer( pf, 10*sizeof(float));
clean_buffer( pi, 10*sizeof(int));
return 0;
}
Или вам нужно передать любую другую информацию, которая может быть использована для определить тип и / или размер данных.
Также: приведение к возвращаемому значению malloc
не требуется в C. Приведение параметров clean_buffer
к типу, который уже имеет переменную, бесполезно. Тип указателя в любом случае преобразуется в void *
, поскольку это то, что ожидает функция.
Примечание: в других ответах и комментариях упоминается, что вы можете просто передать указатель на memset
или использовать calloc
и т. Д. Это может быть верно для этого очень специфического случая, но если вы хотите сделать что-то еще, кроме простого обнуления памяти применимы те же аспекты, что и к указателям void *
, как я показал здесь. И в этих случаях memset
или calloc
не помогают.
Я вполне уверен, это не будет работать с модальными всплывающими окнами. При открытии всплывающих окон как модальных, Вам, вероятно, придется изменить код на немодальный только для отладки целей.
Я просто попробовал это на своей машине, и это, кажется, работает. Удостоверьтесь, что Вы используете последнюю версию
Иначе обновите свой вопрос, и я попытаюсь выручить снова.
обновление: Удостоверьтесь, что панель инструментов прикрепляется с Вашим родительским окном перед всплывающими огнями. Когда у меня есть прикрепленная панель инструментов (использование небольшого значка панелей в верхнем правом из окна), это, кажется, следует к новому всплывающему окну.
Используйте IE8, который имеет значительно улучшенный набор инструментов разработчика по сравнению с чрезвычайно ограниченным набором в IE7. Нажмите F12, чтобы открыть всплывающее окно с инструментами разработчика.