본문 바로가기

Zig

zig에서 C 문자열 다루기

const zigString: []const u8 = std.mem.span(c_string);
const c_string: [:0]u8 = try allocator.dupeZ(u8, zigString);

std.mem.span 함수는 c 문자열에서 c문자열이 0으로 끝나는 지점(길이) 까지 문자열 slice로 변환해줍니다. 이때 같은 메모리 공간을 사용하므로 추가적인 할당은 없습니다.(결과 slice에는 0이 포함되지 않음.)

 

allocator.dupeZ 함수는 zig string(위에 말했던 slice 문자열)을 0으로 끝나는 c_string으로 변환해줍니다. 이때는 뒤에 0이 들어갈 공간이 있어야 하기 때문에 길이+1만큼 메모리를 할당해서 복사해서 줍니다.

'Zig' 카테고리의 다른 글

tag union으로 타입마다 함수 호출하기  (0) 2024.10.31
임의의 크기 행렬 구현  (0) 2024.07.17