>  기사  >  백엔드 개발  >  golang: 잘못된 메모리 주소 또는 nil 포인터 역참조

golang: 잘못된 메모리 주소 또는 nil 포인터 역참조

WBOY
WBOY앞으로
2024-02-08 21:12:10806검색

golang: 잘못된 메모리 주소 또는 nil 포인터 역참조

PHP 편집기 Xiaoxin은 "golang: 잘못된 메모리 주소 또는 0 포인터 역참조"라는 일반적인 오류 메시지를 소개하기 위해 왔습니다. Golang 프로그래밍 언어를 사용하여 애플리케이션을 개발할 때 때때로 이 오류가 발생합니다. 이는 일반적으로 코드에서 잘못된 메모리 주소 또는 0 포인터가 역참조되었음을 나타냅니다. 이 오류로 인해 프로그램이 중단되거나 예측할 수 없는 동작이 발생할 수 있습니다. 다음으로, 개발자가 이 문제를 더 잘 이해하고 해결하는 데 도움이 되도록 이 오류를 일으킬 수 있는 몇 가지 일반적인 원인과 해결 방법을 살펴보겠습니다.

질문 내용

Execute me 이제 HelloWorld라는 프로그램이 있고 프로젝트 구조는 다음과 같습니다.

aaa.go

으아악

bbb.go

으아악

ccc.go

으아악

main.go

으아악

이제 프로그램을 실행하면 나타납니다 panic: 运行时错误:无效的内存地址或 nil 指针取消引用

근데 내가 바뀌자 main.go

으아악

올바른 값을 출력할 수 있습니다10 bbb.go中的定义var aa = bbb.Bbvar aa = bbb.Bb의 정의가 왜 잘못된지 모르겠습니다

왜 널포인터인지 모르겠네요

Workaround

위 그림을 보시면 import와 변수 초기화 흐름이 나와있습니다. 이제 첫 번째 경우에도 aaa.world。 world 函数中的变量 nil 被设置为 nil ,因为即使在 main 中的 init 函数运行之前,一旦 init 运行 bb 就指向有效内存,但在此之前,包 bbb 中的 bb 从未被初始化。让我们考虑第二种情况,这里init函数也给了bb一个有效的内存,但这里的问题是aa被重新分配给bb,它指向有效的内存,分配后aa 마찬가지입니다.

위 내용은 golang: 잘못된 메모리 주소 또는 nil 포인터 역참조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제