将字符数组转换为字符串时

when converting char array to string

本文关键字:字符串 转换 字符 数组      更新时间:2023-10-16

假设创建了一个长度为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终止,可能会导致问题