I am writing a custom "vector" struct. I do not understand why I'm getting a Warning: "one" may be used uninitialized here.
This is my vector.h file
#ifndef VECTOR_H #define VECTOR_H typedef struct Vector{ int a; int b; int c; }Vector; #endif /* VECTOR_ */ The warning happens here on line one->a = 12
#include<stdio.h> #include<stdlib.h> #include<math.h> #include "vector.h" int main(void){ Vector* one; one->a = 12; one->b = 13; one->c = -11; }
one has not been assigned so points to an unpredictable location. You should either place it on the stack:
Vector one; one.a = 12; one.b = 13; one.c = -11 or dynamically allocate memory for it:
Vector* one = malloc(sizeof(*one)) one->a = 12; one->b = 13; one->c = -11 free(one); Note the use of free in this case. In general, you'll need exactly one call to free for each call made to malloc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With