尝试运行程序时出现段错误(核心已转储)。就是一些简单的指针操作,但是我想不出问题所在。请帮帮我。提前致谢!
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;
}
你有一个未初始化的指针。访问该指针会导致未定义的行为。在您的情况下,未定义的行为表现为段错误/错误。
在更改 put_value_to_address
中指向的值之前,您需要确保 ptr
指向有效的值。
int* ptr = malloc(sizeof(int));
或
int i;
int* ptr = &i;
如果您使用malloc
,请确保释放内存。添加
free(ptr);
在 main
结束之前。
我是一名优秀的程序员,十分优秀!