Android ndk Android NDK在读取/写入文件时崩溃

Android ndk Android NDK在读取/写入文件时崩溃,android-ndk,native-activity,Android Ndk,Native Activity,我已经将一个非常大的应用程序移植到Android上。它通过TCP/IP接收二进制数据,并将其写入应用程序中不时使用的文件中。它保存文件的目录默认设置为./file\u cache。这里出了问题: fileHandle = fopen(filename,"wb"); 在本例中,文件名为“file_i”,其中i从0开始,并为每个文件递增 程序在写入时崩溃,并且它不必在第一个文件上崩溃,有时甚至会在第十个文件上崩溃。当它崩溃时,fileHandle最终为NULL 文件名最初在wchar中,但在之前已

我已经将一个非常大的应用程序移植到Android上。它通过TCP/IP接收二进制数据,并将其写入应用程序中不时使用的文件中。它保存文件的目录默认设置为./file\u cache。这里出了问题:

fileHandle = fopen(filename,"wb");
在本例中,文件名为“file_i”,其中i从0开始,并为每个文件递增

程序在写入时崩溃,并且它不必在第一个文件上崩溃,有时甚至会在第十个文件上崩溃。当它崩溃时,fileHandle最终为NULL

文件名最初在wchar中,但在之前已转换(我在记录器中打印出来以确认其正确性)

我尝试过的:

  • 我已经添加了所有与此相关的权限 文件读/写外部存储器

  • 我尝试了不同的位置/SD卡/文件和 /数据/数据//文件

问题:

  • 当前目录是什么,即文件的最终位置 在默认设置上

  • 是什么导致fopen返回null,而这又是导致崩溃的原因


  • 非常感谢您的建议。

    我发现了这个问题,尽管这是一个常规的程序错误。文件名“file_i”是由于一些复杂的代码被指定为大小1,这自然太小,导致分割错误。所以这与福彭无关。实际上,我遇到的所有分段错误都是由类似于此的错误引起的,所以无论何时处理char/wchar,都值得仔细检查代码


    此外,我使用/data/data/。。工作正常的文件夹,实际上还没有试过sdcard one,但看不出它为什么不工作。

    我不会依赖Android应用程序中的当前目录-当前目录的整个概念对非控制台软件来说都很有用。只需使用完整路径即可。使用
    Context.getDir()
    获取应用程序的数据文件夹路径。正如我所说,我还尝试了其他目录。有没有办法在NDK中获取该数据文件夹?我根本不使用Java,我非常希望不要使用它。它可以在
    android\u app
    中找到,您的
    android\u main
    可以作为参数使用。具体来说,它是
    state->activity->internalDataPath
    。如果您使用的是NativeActivity,请将问题标记为
    native activity
    -环境明显不同。崩溃是什么?崩溃的唯一表现形式是
    fopen()
    返回NULL吗?在这种情况下,您是否再次尝试调用
    fopen()
    ?如果在
    fopen()
    之前,logcat中有一些相关的行,请发布它们。您找到解决方案了吗?我也遇到同样的问题