gpt4 book ai didi

C strcpy 转换为共享内存中的字符串数组

转载 作者:行者123 更新时间:2023-11-30 14:25:42 24 4
gpt4 key购买 nike

我想要(或需要)做一些类似的事情

char **my_array = malloc(1000*64);
strcpy(arr[0], "test");

虽然我知道 arr[0] 并不是指向一 block 单独的已分配内存,但我认为应该能够像这样将字符串复制到其中(但它是分段的)。这有效

arr[0] = "test";

但是这是行不通的,因为我的实际目标是在共享内存中执行此操作。

shm_array = shmget(IPC_PRIVATE, 1000 * 64, IPC_CREAT | 0644);
my_array = (char**) shmat(shm_array, (void**)0, 0);

实际上我的问题可以改写为:“如何在共享内存中创建字符串数组?”。我尝试创建 1000 个单独的“字符串”共享内存段,但除此之外它不起作用,而且似乎也是错误的。此外,我认为应该能够使用相对指针偏移量写入一个大的共享内存段。

最佳答案

您可以只创建一 block 内存并写入特定的偏移量:

char * const buf = malloc(HUGE);

strcpy(buf + offset1, "hello");
strcpy(buf + offset2, "world");

最好使用 strncpy 并传递 HUGE - offset 的大小,以确保不会跑到最后。管理抵消是您自己的责任。或者,如果效率不太重要,您可以使用 strncat

关于C strcpy 转换为共享内存中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10053866/

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