簡體   English   中英

Cython Memoryviews - 大數組上的Seg錯誤?

[英]Cython Memoryviews — Seg Fault on Large Arrays?

即使非常小的簡單整數數組也會看到奇怪的行為。

%%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,而在於堆棧。 你是在棧上分配10個萬元元素的數組,當你真的應該給它分配在堆上 ,使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM