초기화되지 않은 변수에 쓰기 : 정의되지 않은 동작?

RobertR

Bjarne Stroustrup의 "A Tour of C ++"(제 2 판) 18 페이지에서 그는 "거의 모든 유형에 대해 초기화되지 않은 변수에서 읽거나 쓰는 효과는 정의되지 않았습니다"라고 말합니다.

초기화되지 않은 변수 에서 읽는 것이 정의되지 않은 동작 인 이유를 이해 하지만 초기화되지 않은 변수에 쓰는 것이 정의되지 않은 동작 인 이유는 무엇입니까? 정의되지 않은 동작을 트리거하지 않고 int x;읽거나 쓸 수 없기 때문에 x(즉,으로 아무것도 할 수 없기 때문에) 이와 같은 작업을 수행하는 것은 완전히 쓸모가 없기 때문입니다 x(이가 int적용되는 "거의 모든 유형"중 하나 라고 가정 ).

NathanOliver

초기화되지 않은 변수에 쓰는 것은 괜찮습니다. 초기화되지 않은 변수로 정의되지 않은 동작을 얻을 수있는 유일한 경우는 변수에 어떤 것이 기록되기 전에 변수를 읽으려고 할 때입니다. 그러면 그 값이 정의되지 않았기 때문에 정의되지 않은 동작이 있습니다.

이제 정의되지 않은 동작은 수명이 시작되지 않은 객체에 쓰는 것입니다. 예를 들어 다음과 같은 구조체가있는 경우

struct foo
{
    std::string str;
};

으로 당신은 그것을 위해 메모리를 확보 malloc같은

foo* f = malloc(sizeof(foo));

그럼 당신은 할 수 없습니다

f->str = "some text";

그 이유는 malloc실제로 당신에게 물건을주지 않기 때문 입니다. 그것이하는 일은 객체에 대한 저장소를 할당하는 것입니다. 이것은 의 생성자가 std::string사소 하지 않다는 것을 의미하는 사소하지 않은 생성자를 가지고 있기 때문에 실제로 객체가 있다고 생각하기에 충분하지 않습니다 foo. 의 수명 *f을 시작하려면 foo의 생성자 를 호출해야합니다 . 이를 위해 제공하는 메모리에서 객체를 구성하는 new 배치 를 사용 합니다. 마치

foo* f = malloc(sizeof(foo));
new(f) foo;

이것은 Bjarne이 이야기하려는 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

정의되지 않은 동작을 호출하지 않고 초기화되지 않은 변수 사용

분류에서Dev

초기화되지 않은 초기화되지 않은 변수

분류에서Dev

Ruby가 작동하지 않거나 초기화되지 않은 상수 필요

분류에서Dev

Rails, 초기화되지 않은 상수 Rails 시작하기

분류에서Dev

동기화되지 않은 밀리 초

분류에서Dev

Rails 초기화되지 않은 상수

분류에서Dev

초기화되지 않은 상수 MiniMagick

분류에서Dev

초기화되지 않은 상수 Sinatra

분류에서Dev

초기화되지 않은 상수 Ruby

분류에서Dev

초기화되지 않은 상수 ActiveRecord

분류에서Dev

NameError (초기화되지 않은 상수

분류에서Dev

초기화되지 않은 C ++ 구조체의 동작

분류에서Dev

초기화되지 않은 배열 및 설정되지 않은 배열의 이상한 동작

분류에서Dev

함수에서 초기화되지 않은 변수

분류에서Dev

초기화되지 않은 변수가 항상 정의되지 않은 유형이면 안됩니다.

분류에서Dev

변수 ans에 초기화되지 않은 메모리 사용

분류에서Dev

Java에서 초기화되지 않은 변수

분류에서Dev

tensorflow에서 초기화되지 않은 변수

분류에서Dev

조건부 점프 또는 이동은 초기화되지 않은 값 및 유효하지 않은 크기 쓰기에 따라 다릅니다.

분류에서Dev

if 문 xcode의 초기화되지 않은 변수

분류에서Dev

case 문의 초기화되지 않은 변수

분류에서Dev

초기화되지 않은 변수의 값은 어디에서 나옵니까?

분류에서Dev

ionice는 동기화되지 않은 쓰기 (예 : 일반 쓰기)에 영향을주지 않습니까?

분류에서Dev

초기화되지 않은 변수로 취급되는 객체

분류에서Dev

가변 크기의 C 초기화 및 초기화되지 않은 배열

분류에서Dev

roo gem이 작동하지 않습니다 (NameError : 초기화되지 않은 상수 Excel)

분류에서Dev

초기화되지 않은 지역 변수 c4700

분류에서Dev

초기화되지 않은 지역 변수 'xAxis'사용

분류에서Dev

정의되지 않은 메서드 및 초기화되지 않은 상수 오류

Related 관련 기사

  1. 1

    정의되지 않은 동작을 호출하지 않고 초기화되지 않은 변수 사용

  2. 2

    초기화되지 않은 초기화되지 않은 변수

  3. 3

    Ruby가 작동하지 않거나 초기화되지 않은 상수 필요

  4. 4

    Rails, 초기화되지 않은 상수 Rails 시작하기

  5. 5

    동기화되지 않은 밀리 초

  6. 6

    Rails 초기화되지 않은 상수

  7. 7

    초기화되지 않은 상수 MiniMagick

  8. 8

    초기화되지 않은 상수 Sinatra

  9. 9

    초기화되지 않은 상수 Ruby

  10. 10

    초기화되지 않은 상수 ActiveRecord

  11. 11

    NameError (초기화되지 않은 상수

  12. 12

    초기화되지 않은 C ++ 구조체의 동작

  13. 13

    초기화되지 않은 배열 및 설정되지 않은 배열의 이상한 동작

  14. 14

    함수에서 초기화되지 않은 변수

  15. 15

    초기화되지 않은 변수가 항상 정의되지 않은 유형이면 안됩니다.

  16. 16

    변수 ans에 초기화되지 않은 메모리 사용

  17. 17

    Java에서 초기화되지 않은 변수

  18. 18

    tensorflow에서 초기화되지 않은 변수

  19. 19

    조건부 점프 또는 이동은 초기화되지 않은 값 및 유효하지 않은 크기 쓰기에 따라 다릅니다.

  20. 20

    if 문 xcode의 초기화되지 않은 변수

  21. 21

    case 문의 초기화되지 않은 변수

  22. 22

    초기화되지 않은 변수의 값은 어디에서 나옵니까?

  23. 23

    ionice는 동기화되지 않은 쓰기 (예 : 일반 쓰기)에 영향을주지 않습니까?

  24. 24

    초기화되지 않은 변수로 취급되는 객체

  25. 25

    가변 크기의 C 초기화 및 초기화되지 않은 배열

  26. 26

    roo gem이 작동하지 않습니다 (NameError : 초기화되지 않은 상수 Excel)

  27. 27

    초기화되지 않은 지역 변수 c4700

  28. 28

    초기화되지 않은 지역 변수 'xAxis'사용

  29. 29

    정의되지 않은 메서드 및 초기화되지 않은 상수 오류

뜨겁다태그

보관