memset и memcpymemcpyСинтаксис:
#include <string.h> void * memcpy ( void * destinationPtr, const void * sourcePtr, size_t num );
Если в коде используется memcpy см. информацию в этой таблице.
| Спецификация | Пример |
|---|---|
Polyspace ® запускает функцию Недопустимая проверка стандартных библиотечных подпрограмм. Проверка определяет, является ли блок памяти sourcePtr или destinationPtr точки на больше или равны по размеру памяти, назначенной им через num. | #include <string.h>
typedef struct {
char a;
int b;
} S;
void func(int);
void main() {
S s;
int d;
memcpy(&d, &s, sizeof(S));
}В этом коде Polyspace создает красную ошибку Недопустимое использование стандартной подпрограммы библиотеки по следующей причине:
|
Polyspace не проверяет, что память После использования | #include <string.h>
typedef struct {
char a;
int b;
} S;
void func(int);
void main() {
S s, d={'a',1};
int val;
val = d.b; // val=1
memcpy(&d, &s, sizeof(S));
val = d.b;
// val can have any int value
}В этом коде, когда |
Polyspace вызывает красный цвет Недопустимое использование стандартной процедуры библиотеки проверка, если исходный и конечный аргументы перекрываются. Наложение назначений запрещено стандартом C. | Для этого назначения памяти создается красная проверка: #include <string.h>
int main() {
char arr[4];
memcpy (arr, arr + 3, sizeof(int));
} |
memsetСинтаксис:
#include <string.h> void * memset ( void * ptr, int value, size_t num );
Если в коде используется memset см. информацию в этой таблице.
| Спецификация | Пример |
|---|---|
Polyspace выполняет проверку использования стандартной библиотеки для функции. Проверка определяет, является ли блок памяти ptr точки на больше или равны по размеру памяти, назначенной им через num. | #include <string.h>
typedef struct {
char a;
int b;
} S;
void main() {
int val;
memset(&val,0,sizeof(S));
}В этом коде Polyspace создает красную ошибку Недопустимое использование стандартной подпрограммы библиотеки по следующей причине:
|
Если | #include <string.h>
typedef struct {
char a;
int b;
} S;
void main() {
S s;
int val;
memset(&s,0,sizeof(S));
val=s.b; //val=0
}В этом коде Polyspace считает, что после использования |
После использования
| #include <string.h>
typedef struct {
char a;
int b;
} S;
void main() {
S s;
int val;
memset(&s,1,sizeof(S));
val=s.b;
// val can have any int value
}В этом коде Polyspace считает, что после использования После |