我正在寻找一些东西,它给了我大小,由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::string
、std::array
或std::vector
。
-
C 和 C++ 标准不提供从地址获取在调用返回该地址的
malloc
时请求的内存量的方法。 -
某些 C 或 C++ 实现提供了一种获取给定地址提供的内存量的方法,例如
malloc_size
。提供的金额可能大于请求的金额。 -
如果内存包含一个字符串,该字符串是以空字符结尾的字符数组,则可以通过计算字符数到空字符来确定字符串的长度。此功能由标准
strlen
函数提供。此长度与分配的空间不同,当然,除非字符串恰好填充了空间。
没有(好的、标准的、可移植的(方法可以仅从指针值来判断它是否是数组的第一个元素,也不知道它后面有多少元素。 该信息必须单独跟踪。
如果你用C++写作,如果你能帮上忙,不要做自己的内存管理。使用标准容器类型,如std::vector
或std::map
(或文本std::string
(。 如果必须执行自己的内存管理,请使用new
和delete
运算符而不是*alloc
和free
库函数,并在这些操作周围包装一个类,该类还跟踪已分配的元素数(与std::vector
和std::map
一样,通过只读size()
方法返回(。