【发布时间】:2019-04-07 09:09:48
【问题描述】:
我有一些不明白的地方。
这是我的工作:
float* test = (float*) malloc(4 * sizeof(float) );
然后我试着做
test[100] = 1.0;
printf("%f\n",test[100]);
而且……它奏效了……
我在等待分段错误,但没有,我不明白为什么。 我想这样做以验证我的数组是否已正确分配。 我真的没想到,也许我错过了什么,所以我在互联网上搜索,似乎每个人都得到了一个段错误...... 所以特地过来问问。 谢谢
【问题讨论】:
-
您所做的事情会导致未定义的行为,包括有时没有段错误...
-
首先请选择您实际使用的编程语言。C 和 C++ 是两种截然不同的语言。其次,请阅读how to ask good questions,以及this question checklist。当然,请尝试创建Minimal, Complete, and Verifiable Example 向我们展示。然后编辑您的问题以改进它,例如告诉我们为什么您预计会发生崩溃。
-
这个问题与 C 和 C++ 都有关,不是吗?
-
要验证您的数组是否正确分配,请检查
if ( test == NULL )(或相反) -
一些程序员老兄很抱歉,我的问题没有以最好的方式提出,我在火车上,只能通过手机访问互联网。实际上我的问题涉及 C 和 C++,这就是我标记它们的原因。我将 g++ 与 .cpp 文件一起使用,但我主要在其中编写 C 代码。我的其余代码与我的问题无关,我为测试这种行为所做的唯一事情就是我在这里写的。我 malloc 一个包含 4 个浮点数的数组,然后请求第 100 个浮点数,这就是为什么我预计会出现段错误。