CString ReleaseBuffer()和终止空字符 - C ++

时间:2016-12-09 16:15:11

标签: c++ memory c-strings

#define LEN_CHART_NAME 25

int _tmain(int argc, _TCHAR* argv[])
{

char info1[125] ="000MyChartName2345678901234567890";
CStringA    name;
char*   str = NULL;
char    name_array[LEN_CHART_NAME];
memset(name_array,  0, LEN_CHART_NAME);     
str = name.GetBuffer(LEN_CHART_NAME + 1);
strncpy(str, &(chart_info1[3]), LEN_CHART_NAME);
//  str[LEN_CHART_NAME] = '\0';
name.ReleaseBuffer();
name.TrimRight();
strncpy(name_array, name, name.GetLength());
}

问题1 - 行是否为[str [LEN_CHART_NAME] ='\ 0';如果我以后只使用name_array打包到更长的字符串是必要的吗?

问题2 - 我需要name.ReleaseBuffer()吗?我认为名称记忆将在超出范围时被释放。

问题3 - 如果我包含str [LEN_CHART_NAME] ='\ 0';行,是否需要更改name.ReleaseBuffer(); to name.ReleaseBuffer(-1);?

0 个答案:

没有答案