Chr*_*ris 3 c struct pointers segmentation-fault
我想在内存中存储一个字符串并稍后阅读:
$$->desc.constant->base.id = (char*)malloc(200);
sprintf($$->desc.constant->base.id, "%f", $1);
printf("->%s\n", $$->desc.constant->base.id); //LINE A
printf("->%i\n", $$->desc.constant); //LINE B
//SOME OTHER CODE
//Then, later on in a function call:
printf("%i", expr->desc.constant); // LINE D
printf("%s", expr->desc.constant->base.id); // LINE C
Run Code Online (Sandbox Code Playgroud)
尽管B行和D行显示相同的地址,但C行中的printf失败并出现Segmentation故障.我错过了什么?
真的很感激任何帮助!
printf("->%i\n", $$->desc.constant); //LINE B
Run Code Online (Sandbox Code Playgroud)
那是无效的.当您在它之前显示constant实际上是指针的行时,您不能将其视为类型int.它们并不具有相同的尺寸和对齐方式.使用用于的格式void*.它将正确输出内存地址:
printf("->%p\n", (void*)$$->desc.constant); //LINE B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |