【发布时间】:2013-05-09 02:04:38
【问题描述】:
我在 C 语言中执行以下操作:
void *initialize()
{
my_type *ret = malloc(sizeof(my_type));
return (void*)ret;
}
void test()
{
my_type* ret = (mytype*)initialize();
my_type x = *ret;
}
它在取消引用时崩溃:
Received signal 11 (Segmentation fault: 11)
指针不为空:我尝试打印指针,得到了一个值。
我还尝试在测试函数中创建一个新的 my_type,如下所示:
my_type* new = malloc(sizeof(my_type));
当我打印 new 和 ret 的整数表示时,它们是彼此非常接近的整数。所以这些东西在内存中应该就在附近。
【问题讨论】:
-
printf需要格式说明符mytype->field的类型是什么? -
mytype->field的值是多少? -
field的类型是什么 -
您使用
mytype->field作为格式字符串,这可能不是您想要做的。 -
不应该是
printf("%d", ret->field);吗?
标签: c pointers memory-management segmentation-fault