sizeof аргумент не совпадает с указанным типом
Неправильно введите используемый в sizeof, происходит, когда оба из следующих условий содержат:
Вы присваиваете адрес блока памяти указателю или передаете данные между двумя блоками памяти. Присвоение или копия используют sizeof оператор.
Например, вы инициализируете указатель с помощью malloc (sizeof ( или скопируйте данные между двумя адресами с помощью type))memcpy (.destination_ptr, source_ptr, sizeof (type))
Вы используете неправильный тип в качестве аргумента sizeof оператор. Вы используете тип указателя вместо типа, на который указывает указатель.
Например, чтобы инициализировать указатель, вы используете type*malloc (sizeof ( вместо type*))malloc (sizeof (.type))
Независимо от какой type обозначает, выражение sizeof ( всегда возвращает фиксированный размер. Возвращенный размер является размером указателя на вашей платформе в байтах. Внешний вид type*)sizeof ( часто указывает на непреднамеренное использование. Ошибка может вызвать выделение блока памяти, который намного меньше, чем, в чем вы нуждаетесь и приводите к слабым местам, таким как переполнение буфера.type*)
Например, примите тот structType структура с десятью int переменные. Если вы инициализируете structType* указатель с помощью malloc(sizeof(structType*)) на 32-битной платформе указатель присвоен блок памяти четырех байтов. Однако быть выделенным полностью для одного structType переменная, structType* указатель должен указать на блок памяти sizeof(structType) = 10 * sizeof(int) байты. Необходимый размер очень больше фактического выделенного размера четырех байтов.
Инициализировать указатель, замена type*sizeof ( в выражении инициализации указателя с type*)sizeof (.type)
| Группа: Программирование |
| Язык: C | C++ |
| Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода |
Синтаксис командной строки: PTR_SIZEOF_MISMATCH |
| Удар: высоко |
| ID CWE: 467 |