【发布时间】:2021-03-25 21:52:22
【问题描述】:
当我收到分段错误错误时,我已经编写了下一个类似的示例
{
const char** var = NULL;
const char* tmp = "Hello! How are you?";
var = (const char**)malloc(5 * sizeof(char*));
for (int i = 0; i < 5; i++)
{
var[i] = (char*)malloc(50* sizeof(char));
strcpy((char*)var[i], tmp);
}
for (int i = 0; var[i]; i++)
{
std::cout << (long int)var[i] << std::endl;
std::cout << var[i] << std::endl;
}
// Free memory
....
}
在第 6 次迭代中,for 循环没有停止(我预计 var[i]==NULL)并且我收到“分段错误”错误。你能解释一下我做错了什么吗?
【问题讨论】:
-
这个崩溃在哪里?这就是调试器提供帮助的地方。
-
这也不是 C。它似乎是 C++,因此重新标记。
-
你为什么会期待
var[6] == NULL? -
正如彼得所指出的,你的财物内存可以是任何东西,不一定是 NULL。
-
(long int)var[i]的意图是执行字符串到整数的转换,还是将该指针表示为数字只是为了看看它发生了什么?