I'm having trouble understanding how some pointers work. I always thought that when you created a pointer variable (p), you couldn't deference and assign (*p = value) unless you either malloc'd space for it (p = malloc(x)), or set it to the address of another variable (p = &a)
However in this code, the first assignment works consistently, while the last one causes a segfault:
typedef struct
{
int value;
} test_struct;
int main(void)
{
//This works
int* colin;
*colin = 5;
//This never works
test_struct* carter;
carter->value = 5;
}
Why does the first one work when colin isn't pointing at any spare memory? And why does the 2nd never work?
I'm writing this in C, but people with C++ knowledge should be able to answer this as well.
Edit: Okay I get that the first one shouldn't work either, but why does it. That's what I'm after.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…