C++拷贝wstring到wchar_t*中踩的坑

news/2024/11/8 9:02:40/

使用wchar_t指针将wstring中的数据拿出来,发现释放的时候异常,不是深拷贝和浅拷贝的问题

首先先看看string怎末复制到char中,代码如下

	string str1="\"0.2.0\"";char* t=new char[str.size()+1];memcpy(t, str1.c_str(), str.size());t[str.size()]='\0';cout<<t<<"|"<<endl;

在这里插入图片描述
第二行是string到char的,可见输出正常,但其实还是有一些问题,如果char的大小不是1字节,就能看出问题了,当使用memcpy拷贝内存的时候,传的大小为str.size(),也就是字符个数,若将char换为wchar_t问题一下就出来了,如果还按照上面写就会出现没有拷贝完全的情况因为wchar_t是宽字节字符,可以支持中文的,其实上面的内存复制写全了应该为

memcpy(t, str1.c_str(), sizeof(char)*str.size());

再写一段宽字节的看看,代码如下,结果为上面图片的第一行,发现没有问题。

   wstring str=L"\"0.2.0\"";wchar_t *temp = new wchar_t[str.size()+1];memset(temp,0,sizeof(wchar_t)*str.size());memcpy(temp,str.c_str(),sizeof(wchar_t)*str.size());temp[str.size()]=L'\0';wcout<<temp<<L"|"<<endl;

踩坑了,去找内存才发现没复制全,刚开始真没想到,


http://www.ppmy.cn/news/1010041.html

相关文章

Spring(九) - 解惑 spring 嵌套事务.2

1. 事务传播特性 在所有使用 spring 的应用中, 声明式事务管理可能是使用率最高的功能了, 但是, 从我观察到的情况看,绝大多数人并不能深刻理解事务声明中不同事务传播属性配置的的含义, 让我们来看一下 TransactionDefinition 接口中的定义 Java代码 /** * Support a cu…

如何使用本地mock数据

当后端同事接口数据还未完成&#xff0c;我们前端开发需要使用数据时&#xff0c;怎么办呢&#xff1f;这里可以自己本地mock数据先用着啦&#xff01;仅在开发时使用 1. 创建一个 xxx.js文件&#xff0c;对外暴露一个数组&#xff1b; 对新建js文件编写导出&#xff0c;返回数…

面试之快速学习c++11 -auto 和decltype

学习地址&#xff1a; http://c.biancheng.net/view/3730.html 1. auto 1. 使用了 auto 关键字以后&#xff0c;编译器会在编译期间自动推导出变量的类型 2. 使用 auto 类型推导的变量必须马上初始化&#xff0c;这个很容易理解&#xff0c;因为 auto 在 C11 中只是“占位符…

npx 的使用原理,以及使用 npx 的一些注意事项

如何使用npx npx pkg-name 如果自己开发了一个cli第三方包 只需要在项目中执行npx <pkg-name> <bin>即可&#xff0c;没安装则会去远程下载。 npx bin 当执行 $ npx <command> 相关命令的时候&#xff0c;npx 会先本地找&#xff08;可以是项目中的也可…

​双标大型现场?马斯克被指虚伪:边解雇不满员工,边提供援助

8月6日消息&#xff0c;推特创始人兼首席执行官埃隆马斯克今日在推特上宣布一项令人震惊的举措。他表示&#xff0c;对于在X平台上发布或支持特定内容而受雇主不公平对待的用户&#xff0c;推特将提供无限法律援助费用以支持他们&#xff0c;并为受影响用户提供强有力的支持。 …

前端Bootstrap中modal常用用法

1.打开官网 Modal Bootstrap v5.1 | Bootstrap官方文档中国镜像 2.选择组件 说明&#xff1a;Components下的modal 3.选择喜欢的样式 说明&#xff1a;本次选择的是Live demo&#xff0c;为了展示更多的可操作性&#xff0c;本次将不用上面的Button trigger modal&#xf…

02_kafka_基本概念_基础架构

文章目录 常见的消息队列工作模式基本概念kafka 特性Kafka 基本架构topic 分区的 目的/ 好处 日志存储形式消费者&#xff0c;消费方式 逻辑消费组 高性能写入&#xff1a; 顺序写 mmap读取&#xff1a;零拷贝DMA 使用场景 常见的消息队列工作模式 至多一次&#xff1a;消息被…

437. 路径总和 III

题目描述&#xff1a; 主要思路&#xff1a; 方法一&#xff1a;递归 从每个节点开始一次递归 class Solution { public:int ans0;void dfs(TreeNode* now,int targetSum, long sum){if(!now)return;sumnow->val;if(sumtargetSum)ans1;dfs(now->left,targetSum,sum);df…