假设char数组为100,并且在其中分配了一个短字符串。
例)
char a[100];
sprintf(a,"%d sized char",100);
string str(a);
(我知道我可以[] =“一些字符串”;但这不是我所关心的情况和事情)
然后其余的记忆在哪里? str不会用字符串和空格保存。它们是否被释放(?)或在从char []转换为str?
时被忽略顺便说一下。你能介绍一下参考书或书吗?我是一个heginner,但他们感兴趣我,但我不能轻易得到他们的信息。
答案 0 :(得分:1)
string
管理其内存的一部分。进行转换时,string
会复制您的字符串。请注意,a
未终止,可能会导致问题
答案 1 :(得分:1)
当你这样做时
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 size char”的内容。
另请注意,您的字符串“%d size char”也会占用不会被释放的内存。