The analyzer detected a potential error related to an explicit type conversion. An array defined as "type Array[3][4]" is cast to type "type **". This type conversion is most likely to be meaningless.
Types "type[a][b]" and "type **" are different data structures. Type[a][b] is a single memory area that you can handle as a two-dimensional array. Type ** is an array of pointers referring to some memory areas.
Here is an example:
void Foo(char **names, size_t count) { for(size_t i=0; i<count; i++) printf("%s\n", names[i]); } void Foo2() { char names[32][32]; ... Foo((char **)names, 32); //Crash }
This is the correct code:
void Foo2() { char names[32][32]; ... char *names_p[32]; for(size_t i=0; i<32; i++) names_p[i] = names[i]; Foo(names_p, 32); //OK }
This diagnostic is classified as:
|
You can look at examples of errors detected by the V548 diagnostic. |