将char数组转换为字符串时

时间:2014-03-23 05:29:04

标签: c++

假设char数组为100,并且在其中分配了一个短字符串。

例)

char a[100];
sprintf(a,"%d sized char",100);
string str(a);

(我知道我可以[] =“一些字符串”;但这不是我所关心的情况和事情)

然后其余的记忆在哪里? str不会用字符串和空格保存。它们是否被释放(?)或在从char []转换为str?

时被忽略

顺便说一下。你能介绍一下参考书或书吗?我是一个heginner,但他们感兴趣我,但我不能轻易得到他们的信息。

2 个答案:

答案 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”也会占用不会被释放的内存。