buffer_get_address 함수 설명
buffer_get_address
함수는 원시 정렬된 버퍼 주소에 대한 포인터를 가져오는 기능을 제공합니다. 이 함수는 주로 확장 프로그램과 함께 사용되며, 이 값을 통해 버퍼 데이터를 접근할 수 있습니다.
사용 주의 사항
- 메모리를 해제할 수 없습니다.
- 메모리 크기를 조정할 수 없습니다.
- 버퍼 주소와 버퍼 크기를 더한 값을 초과하여 쓸 수 없으며, 이를 초과하면 범위를 벗어난 오류가 발생합니다. (버퍼 크기는
buffer_get_size
함수를 사용하여 확인할 수 있습니다.)
문법
buffer_get_address(buffer);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
buffer | Buffer | 사용할 버퍼 |
반환 값
- 포인터
예제
var _address = buffer_get_address(buff_model);
var _end_address = _address + buffer_get_size(buff_model);
위 코드는 buff_model
변수에 저장된 버퍼의 메모리 주소를 가져오고, buffer_get_size
함수로 반환된 버퍼 크기를 주소에 더하여 버퍼의 끝 주소를 계산합니다. 두 값은 이후 사용을 위해 로컬 변수에 저장됩니다.
활용 예제
- 버퍼 데이터 접근
gml var _data_pointer = buffer_get_address(my_buffer); var _first_value = _data_pointer[0]; // 첫 번째 값 접근
- 버퍼 크기 확인
gml var _buffer_size = buffer_get_size(my_buffer);
- 버퍼의 마지막 값 수정
gml var _data_pointer = buffer_get_address(my_buffer); _data_pointer[_buffer_size - 1] = 100; // 마지막 값 수정
- 버퍼의 모든 값 출력
gml var _data_pointer = buffer_get_address(my_buffer); for (var i = 0; i < buffer_get_size(my_buffer); i++) { show_debug_message(_data_pointer[i]); }
- 버퍼 복사
gml var _source_pointer = buffer_get_address(source_buffer); var _dest_pointer = buffer_get_address(dest_buffer); for (var i = 0; i < buffer_get_size(source_buffer); i++) { _dest_pointer[i] = _source_pointer[i]; // 복사 }