c - 如何为 char** str 设置空值

标签 c pointers dynamic-memory-allocation realloc off-by-one

我如何为 char** str 设置一个空值,因为我有错误“解除对越界指针的引用:1 个字节(1 个元素)超过数组 im 使用 C 语言的结尾”

while(part)
    {
        res = (char**)realloc(res, (i + 1) * sizeof(char*));
        *(res + i) = mystrdup(part);

        part = mystrdup(strtok(NULL, delim));
        i++;
    }
    res = (char**)realloc(res, i * sizeof(char*));
    *(res + i) = NULL; // This is where I Encounter the ERROR

最佳答案

这部分代码

res = (char**)realloc(res, i * sizeof(char*));
*(res + i) = NULL;

通过尝试访问 *(res + i),您将前往 off-by-one .你应该写

*(res + i -1) = NULL;

话虽如此,

关于c - 如何为 char** str 设置空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34764384/

相关文章:

c++ - C 语言中的 VecDoub 等效项?

c - 如何使ARM1136JFS (ARM v6) MMU在物理地址空间和虚拟地址空间之间有一对一的映射?

c - 新动态内存 "first time"

c - realloc 如何处理使用 calloc 分配的内存?

c - 二叉搜索树显示 “Preorder” 、 “Inorder” 和 “Postorder”

c - 使用STM32和FreeRTOS时,“HAL_NVIC_SetPriority()”的有效值是什么?

c - 用于 qsort 的指针转换

c++ - C++ 中的动态分配不检查数组边界?

c++ - [C++]查找分布(函数)指针的错误

objective-c - 使用 RubyMotion 处理指针