【发布时间】:2017-04-02 16:52:41
【问题描述】:
我正在尝试分配 10000 个页表但无法编译。我收到以下错误。
error: invalid conversion from 'void*' to 'char (*)[(<anonymous> + 1)]' [-fpermissive]
char (*my_memory)[sysconf(_SC_PAGESIZE)] = mmap(NULL,PAGE_SIZE * (100000 + OVERSIZE),PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS,-1,0);
我的代码如下。
int main(int argc, char **argv) {
unsigned long physical_addr;
uint8_t *buf;
unsigned long virtual_addr;
char (*my_memory)[sysconf(_SC_PAGESIZE)] = mmap(NULL,PAGE_SIZE * (100000 + OVERSIZE),PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS,-1,0);
int i;
for (i = 0; i * sizeof(*my_memory) < 10000; i++) {
my_memory[i][0] = 1;
}
}
不知道如何解决这个问题。请帮忙。
【问题讨论】:
-
你不能分配一个数组...
-
my_memory应该是 pointer to array -
您是否偶然使用了 C++ 编译器?
-
@Kninnug 对.. 我的错。
-
char (*my_memory)[sysconf()] = mmap(....);应该可以工作。虚拟测试:ideone.com/0QBeSx。这个答案:stackoverflow.com/a/11454408/669576.