숫자 260으로 컴파일러 자체가 StringBufferLen 버퍼를 할당한다는 것을 이해하는 것 같습니다. 초기 사이즈는 260입니다. 문자열의 길이가 260보다 작으면 StringBufferLen은 문자열의 실제 길이가 아니라 정확히 260을 출력합니다! 그리고 문자열의 길이가 260보다 크면 문자열의 실제 값이 표시됩니다.
즉, 문자열 길이가 260자 미만인 StringBufferLen 함수를 사용하면 문자열의 실제 길이를 얻지 못하고 항상 260을 얻습니다. 분명히 여기에는 오류가 있습니다. 용어가 260자를 초과하는 즉시 길이의 실제 값을 얻습니다.
테스트에 StringLen을 추가 하고 문자열을 다르게 초기화했습니다 . 문서화는 사실 완전히 다른 동작입니다.
그리고 이 경우 버퍼는 260이 아니라 0을 보여줍니다.
문서에 0이 반환되고 지정된 경우에 적합하다고 나와 있습니다.
문서에 0이 반환되고 지정된 경우에 적합하다고 나와 있습니다.
문서가 현재 동작과 전혀 일치하지 않습니다!
그리고 결과는 다르다두 가지 초기화 유형의 차이점은 무엇입니까?
그리고 왼쪽 숫자 260이 어디에서 왔는지 명확하지 않습니다.
문서가 현재 동작과 전혀 일치하지 않습니다!
문서: 값 0은 문자열이 일정하고 버퍼의 내용을 변경할 수 없음을 의미합니다.
문자열은 상수 "_"로 초기화되고 컴파일러는 문자열을 조건부로(효율성을 위해) 상수로 취급합니다. 왜 안 될까요? 모순은 무엇입니까? 또한 더 이상 작업이 수행되지 않습니다.
그리고 왼쪽 숫자 260이 어디에서 왔는지 명확하지 않습니다.
사회자는 케이스의 위치와 이유를 설명 했습니다.
나타나지 않음 - 확인 이유
진행자 는 설명했습니다 .
숫자 260으로 컴파일러 자체가 StringBufferLen 버퍼를 할당한다는 것을 이해하는 것 같습니다. 초기 사이즈는 260입니다.
문자열의 길이가 260보다 작으면 StringBufferLen은 문자열의 실제 길이가 아니라 정확히 260을 출력합니다!
그리고 문자열의 길이가 260보다 크면 문자열의 실제 값이 표시됩니다.
즉, 문자열 길이가 260자 미만인 StringBufferLen 함수를 사용하면 문자열의 실제 길이를 얻지 못하고 항상 260을 얻습니다.
분명히 여기에는 오류가 있습니다.
용어가 260자를 초과하는 즉시 길이의 실제 값을 얻습니다.
ps 문서가 오래되었으므로 오해의 소지가 있습니다.
즉, 문자열 길이가 260자 미만인 StringBufferLen 함수를 사용하면 문자열의 실제 길이를 얻지 못하고 항상 260을 얻습니다.
분명히 여기에는 오류가 있습니다.
용어가 260자를 초과하는 즉시 길이의 실제 값을 얻습니다.
엄밀히 말하면 문자열 길이: StringLen 및 버퍼 길이: StringBufferLen은 다소 드문 기능입니다. 그리고 일반적인 경우에는 일치하지 않을 수 있습니다.
전체적으로 적어도 두 가지 의심스러운 경우가 있습니다.
실행 결과 상수 string 의 경우 필요 이상으로 많은 메모리가 할당됩니다(원칙적으로 길이를 늘리는 것은 불가능합니다).
실행 결과 상수 string 의 경우 필요 이상으로 많은 메모리가 할당됩니다(원칙적으로 길이를 늘리는 것은 불가능합니다).
문자열에 대한 버퍼의 사전 할당 크기는 컴파일러의 내부 문제입니다.
문자열로 작업을 반복적으로 변경합니다.