有没有办法找到动态内存大小,比如大小?



我正在寻找一些东西,它给了我大小,由str字符指针采取。

int main()
{
char * str = (char *) malloc(sizeof(char) * 100);
int size = 0;
size  = /* library function or anything use to find size */
printf("Total size of str array - %dn", size);
}

我想证明给定内存是 100 字节。 有人对此有任何想法吗?

原始指针只知道它指向其类型的单个元素。如果它指向的那个东西恰好是数组的一部分,指针就不知道,也没有办法从中获取这些信息。

您希望改用知道其大小的类型,例如;std::stringstd::arraystd::vector

  1. C 和 C++ 标准不提供从地址获取在调用返回该地址的malloc时请求的内存量的方法。

  2. 某些 C 或 C++ 实现提供了一种获取给定地址提供的内存量的方法,例如malloc_size。提供的金额可能大于请求的金额。

  3. 如果内存包含一个字符串,该字符串是以空字符结尾的字符数组,则可以通过计算字符数到空字符来确定字符串的长度。此功能由标准strlen函数提供。此长度与分配的空间不同,当然,除非字符串恰好填充了空间。

没有(好的、标准的、可移植的(方法可以仅从指针值来判断它是否是数组的第一个元素,也不知道它后面有多少元素。 该信息必须单独跟踪。

如果你用C++写作,如果你能帮上忙,不要做自己的内存管理。使用标准容器类型,如std::vectorstd::map(或文本std::string(。 如果必须执行自己的内存管理,请使用newdelete运算符而不是*allocfree库函数,并在这些操作周围包装一个类,该类还跟踪已分配的元素数(与std::vectorstd::map一样,通过只读size()方法返回(。

相关内容

  • 没有找到相关文章

最新更新