When I run this code, result is always 24 regardless of what string is. Why?

Viewed 83

When I run this code, result is always 24 regardless of what string is. Why?

#include <bits/stdc++.h>
using namespace std;
    
int main()
{
    string s = "asdccccc";
    cout << sizeof(s);
    return 0;
}
2 Answers

A string is an object. By using sizeof you are getting the size of the members of that object. One of those members is probably a pointer to the actual string contents, but the size of a pointer is constant no matter what it points to.

Consider this simple example

class string
{
    const char* _ptr;
    ....
    ....
public:
   
}

When you write sizeof(string), you will get the size of the class, not the size of string literal _ptr points to.

Related