>> 데이비드 J. 마란 : 그래서 그것은 밝혀 그 문자열을 복사하는 것은 거의 없습니다
, 원시를 복사하는 간단한 INT 또는 부유물 등을들 수있다.
결국, 후드 아래 문자열 일련의 문자입니다.
그래서 문자열을 복사, 따라서에있다 그 시퀀스 전체의 복사를 포함
문자.
>> 의 그를 다시 보자 마지막으로 구현이 찢어
라인, 문자열 t는의에 해당하는 분명 충분하지 않았다.
의이 라인으로 교체하자 그 다음과 같이 대신 보인다.
문자열 t는 문자열 길이의의의 malloc을 가져옵니다 문자의의 1을 더한 배 크기.
>> 지금가는 비트 인용있다 이 코드 라인에.
첫째, malloc에​​, 짧은 메모리 할당 및
기능은 그냥 않습니다.
정수 감안할 때, 그것은 당신에게 반환 의 메모리 청크의 주소
많은 바이트.
한편, 문자열의 길이에 1을 더한 우리가 원하는 것을 표시하기위한 것입니다
의 이미 점유로 바이트, 그 null 종결 포함
문자열의 끝에 백 슬래시 0.
>> 한편, 나는 반드시 기억하지 않는다 문자도, 얼마나 큰
대부분의 시스템에서 단순히 1 비록 바이트, 그래서 숯불의 크기를 부를 것
동적으로 파악 얼마나 큰 개별 문자입니다.
일단 함께 곱, 나는 돌아 가야 내가 필요로하는 바이트의 총 수.
>> 하지만 malloc에​​는 무엇을 실패하는 경우 우리가 필요로하는 메모리를 반환?
나는 다음과 같이 가장 좋은 것을 확인 것입니다.
t가 null 같으면 내가 먼저 갈거야 무료 s의 메모리가 GET에 의해 반환
문자열, 그리고 난에 갈거야 오류를 의미하는 1을 반환합니다.
>> 모든 것이 잘 경우, 나는 진행거야 네 루프를 사용하여 반복
다음과 같이.
INT를 들어 내가 0, N 같음을 얻을 의의 문자열 길이.
나는 너무 오래 전이기 때문에이 작업을 수행 할거야 보다 작거나 N에 해당하는 그래서
통해서 포함한 반복 의의 null 종료 문자.
>> 그리고 각각의 반복에, 난 나는 증가하는 것.
한편,이 루프의 내부 복사 T의 i 번째에의의의는 i 번째 문자
위치는 t를 수행하기에 충분 브래킷 난의 브래킷 난을 가져옵니다.
>> 의 지금, 저장, 컴파일시켜, 이 새로운 프로그램을 실행합니다.
사본 1 점 슬래시 복사본 만들기 1.
그리고 나는 무엇인가 말할 것 안녕하세요 모두 소문자.
그리고 다행히도,이 시간 내 원래는 변경되지 않고 그대로 유지됩니다.
안녕하세요 모두 소문자.
하지만 복사, 참으로, 대문자입니다.