【发布时间】:2014-09-05 17:38:41
【问题描述】:
假设我有这段代码
void someFunction(args..) {
char array[4];
array[0] = 'a';
array[1] = 'b';
array[2] = 'c';
array[3] = 'd';
}
基本上,我得到的是数组末尾没有'\0'。 当我们离开这个函数时,array[] 被释放了——对吧?最后没有'\0'符号的事实会导致堆损坏吗?如果这样的功能经常出现怎么办?如果我这样做是不是一样:
void someFunction(args..) {
char* array = new char[4];
array[0] = 'a';
array[1] = 'b';
array[2] = 'c';
array[3] = 'd';
//and now i dont call
//delete array;
}
提前感谢您的帮助! :)
【问题讨论】:
-
你为什么使用 C 风格的字符串?这在很大程度上取决于您对
array的处理方式。 -
“基本上,我的意思是没有'\0' ...”如果你不放一个,你为什么会期待一个那里?将您的数组定义为
char array[5];并为您的两个代码示例输入array[4] = '\0';!这与堆栈或堆无关。
标签: c++ string char heap-corruption