我需要用malloc创建一个2维数组,这样我就可以用函数返回它的指针。在这个函数中,我还将整数(通过getpixel()函数)分配到这个数组中。我是这样做的:
int **tab;
tab = (int**)malloc((600) * sizeof(int));
for (int i = 0; i<600; i++)
{
tab[i] = (int*)malloc((800) * sizeof(int*));
}
for (int i = 0; i<600; i++)
{
for (int j = 0; j<800; j++)
{
tab[i][j] = getpixel(i, j);
}
}
这个数组当然在大多数情况下工作,当我检查它时,它具有我期望的值。然而,当我到达更大的Y时,它停止工作。所以例如。当我想检查数组选项卡[799] [599]时,我不能,因为有关于异常的错误,我不能直接复制它,因为我有其他语言而不是英语版本,但它有点像的是:
“0x00E71C05 w bgi.exe中不支持的异常:0xC0000005:从0x0000095C位置读取时违反访问规则。”
我认为这意味着,mallock()没有为我保留记忆。但是我怎样才能让阵列足够大呢?或者这是其他任何问题吗?
答案 0 :(得分:0)
你的malloc是错误的,它需要像:
var range : Range<Int>? {
get {
guard maxValue > minValue else { return nil }
return Range<Int>(uncheckedBounds: (Int(minValue), Int(maxValue))) }
set {
if let value = newValue {
minValue = Int32(value.lowerBound)
maxValue = Int32(value.upperBound)
} else {
minValue = 0
maxValue = 0
}
}
}
如果您希望阵列为800x600。如果你想要它是600x800只需交换值。