【发布时间】:2015-08-13 22:32:24
【问题描述】:
我有一个 char***,我动态地为它分配了一些内存。但是,当我尝试为其分配一些值时,会出现分段错误。我使用的尺寸不是太大。它在我创建 char[768][1024][3] 时有效,但在我使用相同的精确值动态添加时无效。这是我的代码的 sn-p:
pic = new char**[height];
for(int i = 0; i < height; i++)
{
pic[i] == new char*[width];
for(int j = 0; j< width; j++)
{
pic[i][j] == new char[3];
}
}
pic[0][0][0] = 'a';//seg fault here
exit(1);
【问题讨论】:
-
@πάνταῥεῖ LOL 还没有。我必须克服这个分段错误
-
为什么不使用嵌套的
std::vector's?更容易使用。 -
很简单。你知道
==和=之间的区别吗?我假设任何带有所有警告的编译器(因为它们总是应该是)会提到这一点。例如 Visual C++: 警告 C4553: '==': operator has no effect;你想要'='吗? -
好吧,因为我们必须将给定的代码转换成线程。我们不能使用向量或任何其他东西。只需使用给定的代码并向其中添加线程即可。我已经完成了困难的部分,但被困在了本应该很容易的部分!
-
你可以很好地使用
std::vector<std::thread>,std::threadsupports move构造。
标签: c++ multidimensional-array segmentation-fault dynamic-memory-allocation