Solidity 솔리디티 강좌 7강 : 4개의 저장영역과 String
이번엔 solidity의 저장영역과 string의 개념에 대해 알아보도록 하자.
solidity 내의 저장 영역에는 storage, memory, call data, stack
로 총 4가지가 있다.
storage
- 대부분의 변수 함수들이 저장되며 영속적인 의미를 지님
- 블록에 들어가기 때문에 모든 노드들이 그 블록을 다운받아야 하므로 가스 비용이 비쌈
memory
- 함수 파라미터, 리턴 값, 레퍼런스 타입이 주로 저장
- 영속성이 없고 함수 내에서만 유효하기에 가스비용이 storage보다 쌈
call data
- 주로 external function의 파라미터에서 사용됨
stack
- EVM에서 stack data를 관리할 때 쓰는 영역
- 1024MB로 제한적
📍string의 경우 data type이 아니라 reference 타입에 들어가기 때문에 memory라는 키워드를 붙여야 한다. 그러나 기본 data type의 경우 memory가 디폴트로 되어 있기 때문에 붙여줄 필요가 없다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;
contract lec7{
//function - string
function get_string(string memory _str)public pure returns(string memory){
return _str;
}
function get_uint(uint256 _ui)public pure returns(uint256){
return _ui;
}
}
👉 결과
이처럼 기본 data type에는 memory 키워드가 붙지 않고, string에는 memory 키워드가 붙는다. pure
를 사용한 이유는 함수 내의 변수만 사용하기 때문이다.
출처 및 참고 자료