尝试运行程序时出现分段错误(核心转储)。只是一些简单的指针操作,但我无法弄清楚问题所在。
int get_address_value(int* ptr) {
return *ptr;
}
void put_value_to_address(int val, int* ptr) {
*ptr = val;
}
int main(int argc, char* argv[]) {
int* ptr;
put_value_to_address(400, ptr);
printf("value in address is %d\n", get_address_value(ptr));
return 0;
}
您有一个未初始化的指针。访问该指针会导致未定义的行为。在您的情况下,未定义的行为表现为分段错误/错误。
在更改
ptr
中指向的值之前,您需要确保 put_value_to_address
指向有效的内容。
int* ptr = malloc(sizeof(int));
或
int i;
int* ptr = &i;
如果您使用
malloc
,请确保释放内存。添加
free(ptr);
在
main
结束之前。
指针
ptr
未初始化,它包含一个垃圾值。这意味着它指向任意内存地址,您可能无法写入该地址。这就是导致分段错误的原因。