将字符数组转换为字符串时
when converting char array to string
假设创建了一个长度为100的char数组,并在其中分配了一个短字符串。
交货)
char a[100];
sprintf(a,"%d sized char",100);
string str(a);
(I know I can a[] = " somestring ";但这不是我所关心的情况和事情)
那么剩下的记忆去哪里了?STR不会保存后面的字符串和空格。他们自由了吗?或者在从char[]到str的转换过程中忽略?
顺便说一句。你能给我介绍一本回忆的参考书或书吗?我是heginner,但我对他们感兴趣,但我不能轻易获得有关他们的信息。
当你这么做的时候
char a[100] ;
您正在分配100字节。
如果你把它作为一个局部变量
void somefunct () ;
{
a[100] ;
}
分配给A的内存会自动回收。在系统堆栈上进行分配。
在调用somefunc()之前
^ [Stack Memory Here]
[SP]
执行某些函数()
A [Old SP Value]
[SP]
当somefunct完成
^ [A was out here]
[SP]
如果你做了
a[100] ;
void somefunct () ;
{
}
内存将保持分配。
当你这样做
string str(a) ;
str复制一个"100大小的char"的内容。
还需要注意的是,字符串"%d大小的char"也会占用内存,这些内存不会被释放。
string
管理它的内存部分。当您进行转换时,string
将复制您的字符串。请注意,您的a
不是null终止,可能会导致问题
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 如何将这个std::字符串转换为std::基本字符串
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在C++中将十六进制字符串转换为文本数据
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何从字符串转换为双精度*
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在C++中将 Python 字符串转换为其转义版本?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 如何将整数字符串转换为整数的二维向量?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 将文件复制到自定义位置,存在字符串转换问题
- 将ANSI C字符串转换为UNICODE
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在C++中将字符串转换为双精度,而无需科学记数法
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何在C++中将字符串转换为双精度?
- 将字符串转换为无符号字符数组/字节数组