昨晚我花了很尴尬的时间来追踪我的应用程序中的段错误。最终,事实证明我写的是:
ANNE_SPRITE_FRAME *desiredFrame;
*desiredFrame = anne_sprite_copy_frame(&sprite->current);
代替:
ANNE_SPRITE_FRAME desiredFrame;
desiredFrame = anne_sprite_copy_frame(&sprite->current);
在第 1 行中,我创建了一个类型化指针,在第 2 行中,我将取消引用的指针的值设置为由anne_sprite_copy_frame()
.
为什么这是个问题?为什么编译器完全接受这个?我能想到的是,示例 1 中的问题是:
- 我为指针保留空间,但不是它指向的内容,或者
- (不太可能)它试图将返回值存储在指针本身的内存中