동적 할당을 이용한 mysql_real_escape_string 래핑 함수
char* Convert(const char* str) {
// 모든 문자열이 escape 문자가 추가될 수 있으니 x2, 널문자를 위한 +1
int size = sizeof(str) * 2 + 1;
char *convert = new char[size];
std::string ret = "";
memset(convert, 0x00, size);
mysql_real_escape_string(db, convert, str, sizeof(str));
ret = convert;
delete [] convert;
return ret.c_str();
}
메모리를 할당할때는 Memory Safety 한지 확인이 필요하다!!!
생각 없이 source 문자열이 모두 escape 문자가 추가될걸 고려하지 않고 메모리 할당하면 큰일 난다.
Vector를 이용한 mysql_real_escpae_string 래핑 함수
std::string Convert(const std::string str) {
if (str.empty())
return "";
int size = data.length();
// 모든 문자열이 escape 문자가 추가될 수 있으니 x2, 널문자를 위한 +1
std::vector<char> convert((size * 2) + 1, '\0');
mysql_real_escape_string(db, convert.data(), data.c_str(), size);
return convert.data();
}
Vector도 마찬가지! 컨테이너라고 쉽게 생각했다가 vector의 사이즈 설정할때 실수할 수 있다.
'Language & Library > etc' 카테고리의 다른 글
[C/C++] Devtoolset으로 최신 컴파일러 적용 방법 (0) | 2020.09.04 |
---|---|
[PHP] 확장 모듈 빌드 방법 (PHP Extension Module) (0) | 2020.09.04 |
[Python] virtualenv 활성화 방법 (git bash, cmd, bash, window, linux, mac) (0) | 2020.02.25 |
[C++] python의 join 함수 간단하게 구현 (0) | 2019.08.14 |
[MS-WSUSSS] 기본적인 통신 (0) | 2019.07.15 |
댓글