在大阵列上出现故障?
即使非常小的简单整数数组也会看到奇怪的行为。
%%cython
import numpy as np
cimport cython
cimport numpy as np
def hi():
DEF MAX = 10000000
cdef int a[MAX],i
cdef int[:] a_mv = a
这崩溃了,但意见成小视图执行我的。 这不是一个明显的内存问题,因为有1000万内存的足够内存......
正如Kevin在评论中提到的那样,问题不在于RAM,而在于堆栈。 您正在堆栈中分配一千万个元素的数组,当您真的应该使用malloc
和朋友将它分配到堆上时。 即使在C中,这也会产生分段错误:
/* bigarray.c */
int main(void) {
int array[10000000];
array[5000000] = 1; /* Force linux to allocate memory.*/
return 0;
}
$ gcc -O0 bigarray.c #-O0 to prevent optimizations by the compiler
$ ./a.out
Segmentation fault (core dumped)
而:
/* bigarray2.c */
#include <stdlib.h>
int main(void) {
int *array;
array = malloc(10000000 * sizeof(int));
array[5000000] = 1;
return 0;
}
$ gcc -O0 bigarray2.c
$ ./a.out
$ echo $?
0
链接地址: http://www.djcxy.com/p/81321.html