gpt4 book ai didi

c - 尝试执行 shmat 时出现分配错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:22 28 4
gpt4 key购买 nike

当尝试执行 shmat 时出现分配错误,告诉我无法访问内存,这在我之前没有发生过,我真的不知道该怎么做。这是错误:

0xffffffffffffffff error: Cannot access memory at address 0xffffffffffffffff

奇怪的是 vecBoard 被分配在进程映射区域中,并且只有在 shmat 被触发时才会变得疯狂。谢谢大家!

    #include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/fcntl.h>
#include <errno.h>
#include <fcntl.h>
#include <time.h>
#include <signal.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>

#define SHM_SIZE 4096
#define FLAGS IPC_CREAT
#define COLUMNS 8
#define ROWS 8
key_t key;

int main()
{
char* vecBoard;

// Creating shared memory :

if ((key = ftok("ex31.c",'k')) == -1)
{
perror("ftok");
exit(1);
}
int shm_id;
shm_id=shmget(key,SHM_SIZE,FLAGS);
if(shm_id==-1)
{
printf("error creating shared memory\n");
exit(0);
}
printf("the shared memory segment ID is: %d\n",shm_id);

vecBoard = (char *)shmat(shm_id,0,0);
if((vecBoard = (char *)shmat(shm_id,0,0)) == (char*)-1)
{
printf("error in attaching to the shared memory\n");
exit(0);
}
}

最佳答案

所示代码为同一内存段调用了两次 shmat()。

这显然是错误的。

关于c - 尝试执行 shmat 时出现分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089080/

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