进行指针操作时出现分段错误(核心已转储)

got segmentation error (core dumped) doing pointer operations

尝试 运行 程序时出现分段错误(核心已转储)。就是一些简单的指针操作,但是我想不出问题所在。请帮帮我。提前致谢!

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;
}

您有一个未初始化的指针。访问该指针会导致未定义的行为。在您的情况下,未定义的行为表现为分段 fault/error.

在更改 put_value_to_address 中指向的值之前,您需要确保 ptr 指向有效的值。

int* ptr = malloc(sizeof(int));

int i;
int* ptr = &i;

如果您使用malloc,请确保释放内存。添加

free(ptr);

main 结束之前。

指针 ptr 未初始化,它包含一个垃圾值。这意味着它指向任意内存地址,您可能无法写入。这就是导致分段错误的原因。