gpt4 book ai didi

python - 读取输入文件时更新 C 数组

转载 作者:太空狗 更新时间:2023-10-30 01:34:53 25 4
gpt4 key购买 nike

我现在使用 cython 读取输入文件,将字符串转换为 int 并将它们存储在 c 数组(而不是列表)中以节省空间。我的代码如下所示:

cdef long p[10000000]
cdef long i
i = 0
f = open(filename, 'r')
for line in f:
temp = map(int, line.split())
p[i] = temp[0]
i = i + 1
f.close()

但是,当我引用数组 p 时,程序总是中止。由于内存使用率非常低,数组未以某种方式“定义”。但是,如果我正在做,它会起作用

cdef i
for i in range(0, 1000):
p[i] = i

最佳答案

我的猜测:

  • 您发布的代码实际上包装在一个函数中,在这种情况下 p 被分配在堆栈上,一旦给定的函数返回,就可以访问 p非法。
  • 您不检查 i 是否溢出,如果 i > 1000000 会发生什么情况?
  • 尝试在堆栈上分配 1M 8 字节整数可能超出允许范围,检查 ulimit -a

总体而言,OP 中的信息不足,例如:

  • 该代码是模块中的顶层代码还是函数的内容?
  • 程序是如何中止的(SEGV?)
  • 在什么情况下引用 p
  • 您使用什么操作系统/体系结构?

我无法使用 Python 2.7.3 Cython 0.17.2 gcc 4.7.2 linux 3.6.9 x86-64 重现您的问题

关于python - 读取输入文件时更新 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com