std::string 的 struct

Reverse Engineering Jun 2, 2023

逆 c++ 的时候经常碰到 std::string 比较烦

以下是 msvc10 的 std::basic_string 的 struct:

template<typename T>
struct basic_string_vc10
{
	union
	{
		T* ptr; // size is < 0x10
		T data[1];
        
		uint8_t raw[16];
	};
	size_t size;
	size_t capacity;
};

template<typename T>
T *basic_string_data_vc10(basic_string_vc10<T> *str)
{
	if (sizeof(T) * str->size > 0x10)
		return str->ptr;

	return str->data;
}

待续 ...

标签