当前位置:  开发笔记 > 编程语言 > 正文

擦除Char []

如何解决《擦除Char[]》经验,为你挑选了2个好方法。

好吧,我正在研究别人的代码.他们做了很多这样的事情:

char description[256];
description[0]=0;

我知道这会在字符数组的第一个位置放置\ 0.但这甚至是一种擦除字符串的安全方法吗?

视觉工作室也会报告内存泄漏,我几乎把这个完成与使用的字符串联系起来.

PS.是的我知道std :: string,是的,我使用它.这不是我的代码.



1> warren..:

要将字符串初始化为0,您可以执行以下操作:

char description[256] = {0};

这将为数组的每个元素分配0.

只是将第一个元素设置为0('\0')不会删除它的内容.它甚至不保证整个字符串被设置为空字符.

正如其他人所说,在函数关闭之前,当它被放弃时,你不能"擦除"静态创建的对象.从技术上讲,当函数被放弃时它也不会被删除 - 堆栈指针只是被改变了.如果你对被删除的数据感到偏执,你应该遍历数组,将每个条目设置为0('\0').



2> John Dibling..:

将char数组的第一个元素设置为\ 0就足以确保'description'是一个格式正确的实际字符串.元素1到255都可以是垃圾,只要元素0为0,描述就是零长度字符串.

你不必担心上面发布的代码中的内存泄漏,因为数组是在堆栈上分配的.一旦它从堆栈中掉落(超出范围),char数组就会被释放.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有