c – 快速开启新/删除和分配/免费
我有一个关于new / delete运算符与alloc / free相比的问题.
当动态地为char *分配内存时,我通常使用calloc,所以所有保留位都设置为零,所以我不必费心无效. char * string = new char [20]是否仅保留20个具有char大小的项目,还是将该memoryarea中的所有位设置为零? 如果没有,可以在此内存上使用memset来实现这一目标吗? 解决方法
当你使用:
string = new char[20]; 分配的数组未初始化.要默认初始化它,您必须使用: string = new char[20](); // Allocates and initializes all members to 0 这在C03§5.3.4/ 15中说明:
至于你的第二个问题 – 是的,你可以使用memset用你想要的任何值填充内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |