nowayings 发表于 2015-4-1 20:50:19

字符串的初始化方式总结

有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;
}

页: [1]
查看完整版本: 字符串的初始化方式总结