【发布时间】:2011-11-13 00:39:12
【问题描述】:
当我的函数从字符串中读取浮点数并将它们放置在 void 数组中时,我遇到了分段错误。段错误发生在以下代码中的 for 循环大约 200 次迭代后:
// Allocate memory
void** data;
data = (void**)malloc(num_vals * sizeof(float));
// Convert text to floats
(*(float**)data)[0] = atof(strtok(text, " "));
for(int index=1; index<num_vals; index++) {
(*(float**)data)[index] = atof(strtok(NULL, " "));
std::cout << (*(float**)data)[index] << std::endl;
}
void 数组是必要的,因为字符串中数据的大小和类型是在运行时确定的。我试过增加 malloc 的大小,但它并没有改变任何东西。有什么想法吗?
【问题讨论】:
-
malloc 返回 void*,为什么要强制转换它?
-
除了
std::cout- 这不是c++ -
为什么要使用二维指针?
-
段错误在哪一行?
-
1. There is no such thing 作为“空数组”。 2. C和C++不是同一种语言;你需要选择一个。 3. 呃,
strtok.