char*到随机生成的数据



我想有一个指向具有一定大小的随机生成数据的指针。

如果我做char* data = new char[fileSize]char* data = (char*)malloc(fileSize),我不知道会发生什么。我不知道它是随机启动分配的内存还是所有字节都具有相同的值(或为零)。

newmalloc做这项工作还是我需要其他东西?

您对new的调用,malloc请勿初始化其返回的数据。您将获得分配给您的内存地址的任何值。

最好使用std :: vector:

std::vector<char> data(fileSize);

它将为您将数据初始化为'',并在向量脱离范围时为您释放基础缓冲器内存。

仅分配内存。至于" C"方法,您可以使用MEMSET或将其直接与Calloc分配(将其设置为0)。如果分配了新的,则必须为零

两者都分配内存,但是当您使用 malloc在C 中分配class对象的内存时,它不调用类的构造函数,但是当您使用new操作员时,它也会调用类是class的构造函数mallocnew之间的主要区别之一。

根据语言规范,没有newmalloc不要在原始类型上初始化数据。编译器/运行时可以免费为您提供记忆。

但是,在实践中,您分配的内存很可能由内核零。现代操作系统将其作为一种安全措施做到这一点,而不是将曾经由另一个进程拥有的内存归零可以泄漏到其他过程的数据中的内存中。如果其他过程存储了密码怎么办? Note 这并不总是正确的,不应依靠。总是初始化您的内存。

如果您实际需要随机数据,则需要自己生成。您从哪个随机来源取决于您的需求。如果您需要一些"随机"数据进行测试,或者说在游戏中生成怪物,请使用标准库中可用的伪随机生成器来生成数据。如果您需要加密的数字生成密码,那么确保您的正确数字更为复杂。

最新更新