字符串初始化方式总结

2种字符串初始化方式总结:

//字符串测试函数
#define BUFFER_SIZE 1024
VOID SetStringTest()
{
	//第一种字符串初始化方式。这种方式的优点是用完后不需要清理内存
	UNICODE_STRING str;
	RtlInitUnicodeString(&str,L"hello");

	//第二种方式是:程序员自己申请内存,然后自己释放
	UNICODE_STRING unicode_str = {0};
	//设置缓冲区大小
	unicode_str.MaximumLength = BUFFER_SIZE;
	//分配内存
	unicode_str.Buffer = (PWSTR)ExAllocatePool(PagedPool,BUFFER_SIZE);
	WCHAR *wideStr = L"Hello";

	//设置字符长度,我因为是宽字符,所以需要*2
	unicode_str.Length = 2*wcslen(wideStr);

	//保证缓冲区足够大,否则终止程序
	ASSERT(unicode_str.MaximumLength >= unicode_str.Length);
	//内存复制
	RtlCopyMemory(unicode_str.Buffer,wideStr,unicode_str.Length);
	
	KdPrint(("unicodeStr:%wZ\n",unicode_str));

	//清理内存
	ExFreePool(unicode_str.Buffer);
	unicode_str.Buffer = NULL;
	unicode_str.Length = unicode_str.MaximumLength = 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值