我想知道变量的内存使用情况,我试过这个:
#include <iostream>
int main()
{
char* testChar1 = "Hi";
char* testChar2 = "This is a test variable";
char* testChar3 = "";
std::cout <<sizeof(testChar1)<<std::endl;
std::cout <<sizeof (testChar2) <<std::endl;
std::cout <<sizeof(testChar3)<<std::endl;
}
输出是:
4
4
4
我认为我做的不对。我想知道每个变量在堆栈中使用了多少内存。
编辑1
同时如果char* testChar3 = NULL
;程序崩溃了。那么它是否意味着没有相同的内存使用?
答案 0 :(得分:2)
你只需打印指针的大小,它们总是一样的。你需要的是将字符串的strlen
乘以单个字符的大小。
编辑:根据我的评论和@Suma的更正:
cout << (strlen(testChar) + 1) * sizeof(char) + sizeof(testChar);
终止零字符需要1。
答案 1 :(得分:2)
除了使用strlen
之外,您还可以在
sizeof
char testChar1[] = "Hi";
编辑:是的,这包括空终止符,IMO优于strlen
。实际大小确实包括空终止符。
答案 2 :(得分:0)
sizeof(testChar1)
返回指针大小,如果要测试字符串长度,请尝试将sizeof
替换为strlen
答案 3 :(得分:0)
在这种情况下,您只打印指针的大小而不是字符。所以,你真的想要打印指针,然后取消引用它并打印它所指向的内存大小。
答案 4 :(得分:0)
实际上是在打印指针在系统上占用的字节数。我认为你需要做的是使用strlen函数。在这里查看。 strlen
std::cout<<strlen(testChar1)<<std::endl;
std::cout <<strlen(testChar2) <<std::endl;
std::cout <<strlen(testChar3)<<std::endl;
答案 5 :(得分:0)
I want to know how much memory every variable uses in stack .
您的程序打印正是您想要的。
如果您真正想要的是知道有多少内存(在哪里?? !!)占用您的变量指向的字符串 - 指针,请阅读另一个答案。