我尝试在MacOSX 10.8.2和XCode 4.6下运行一个简单的mmap测试。这个程序如下,映射为读取的文件是OK的,而对写入指针“目标”的访问将使程序崩溃。错误消息是“EXC_BAD_ACCESS”。
有人和我有同样的案子吗?谢谢。
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, const char * argv[]) {
int input, output;
size_t size;
char *source, *target;
input = open("SEK2.txt", O_RDONLY);
if (input == -1) {
printf("Open source file failed");
return -1;
}
output = open("test.txt", O_RDWR|O_CREAT|O_TRUNC);
if (output == -1) {
printf("Open Output file failed");
return -1;
}
size = lseek(input, 0, SEEK_END);
printf("File size = %d\n", size);
source = (char*)mmap(0, size, PROT_READ, MAP_PRIVATE, input, 0);
if ( source == (void*)-1) {
printf("Source MMap Error\n");
return -1;
}
target = (char*)mmap(0, size, PROT_EXEC, MAP_PRIVATE, output, 0);
if ( target == (void*)-1 ) {
printf( "Target MMap Error\n");
return -1;
}
memcpy(target, source, size); // EXC_BAD_ACCESS to "target"
munmap(source, size);
munmap(target, size);
close(input);
close(output);
printf("Successed");
return 0;
}
在mac下,不能使用PROT_EXEC
,因此不能使用命名的pthread mutex、cond等。
仅使用PROT_READ | PROT_WRITE
标志
你不能只写PROT_EXEC的内存映射。你需要PROT_READ|PROT_WRITE,我完全不明白你为什么要PROT_EXEC。
我认为您需要ftruncate(输出,大小);
以使输出文件足够大。我不相信内核会自动增长文件以容纳写入映射地址的数据。
问题是,当我在Google中使用授权运行此代码时,它会立即崩溃: 但是日志中的错误: 2019-06-22 17:55:42.652 29327-23222/?E/AudioSource:在已关闭的AudioSource 2019-06-22 17:55:43.240 2093-2616/?E/TouchFilter:setTouchFilter日志启用参数:0 2019-06-22 17:55:
我正在Eclipse中创建一个应用程序,现在我想在我的项目中使用appcompat库。我已经成功地导入了这个库,当我用AppCompatActivity扩展一些活动时,它工作得很好。问题是,当我运行应用程序时,我的应用程序启动由AppCompActivty扩展的活动。应用程序崩溃。Log Cat正在显示NoClassDefFoundError:请为我指引正确的方向。谢谢
我是编程新手,正在尝试制作一款android应用程序。最近几天我在使用调试器时遇到了麻烦。该应用程序在正常运行模式下工作正常。应用程序连接到firebase,所有数据都保存在那里。如果我尝试以学生身份在调试模式下登录,应用程序将立即崩溃。如果我以教授的身份登录,我会进入主页,但如果我单击“下一步”按钮,我会返回到登录页面,它会变为运行模式。我真的不知道问题出在哪里,但调试器和firebase有什么
从昨天开始,当我在没有调试器的情况下启动应用程序时,它就会挂起。当我调试应用程序时,一切正常。我不知道我是不是应该把代码贴出来我觉得太多了。我正在使用Google Maps API。
我有一个发布Runnables的处理程序(线程)。如果Runnable错误地抛出RuntimeException,整个应用程序进程就会崩溃。作为默认情况,这听起来很明智,但我想捕获此类运行时异常,记录错误,然后继续运行。不过,我很难做到这一点。我想到了以下选项: 子类并覆盖,其中包含调用发布的Runnables的方法的代码。这不起作用,因为是最终的。 子类并覆盖调用的run方法。在运行时异常的情况