簡體   English   中英

C realloc(動態數組)-訪問沖突

[英]C realloc (dynamic arrays) - Access Violation

從C中的動態數組開始。在insertArray函數中(在realloc行中或嘗試將元素(char)存儲在數組中時),我遇到訪問沖突。

似乎無法解決它或觸及它的底部。 謝謝

碼:

#include <stdio.h>

typedef struct {
    char *array;
    size_t used;
    size_t size;
} Array;

Array elements;

void initArray(Array *a, size_t initialSize) {
    a->array = (char *)malloc(initialSize * sizeof(char));
    a->used = 0;
    a->size = initialSize;
}

void insertArray(Array *a, char element) {
    if (a->used == a->size) {
        a->size *= 2;
        a->array = (char *)realloc(a->array, a->size * sizeof(char));
    }
    a->array[a->used++] = element;
}

void popArray(Array *a) {
    a->used--;
}

void freeArray(Array *a) {
    free(a->array);
    a->array = NULL;
    a->used = a->size = 0;
}

char vars[15];

int main() {
    initArray(&elements, 2);
    printf("Enter 15 character String: ");
    scanf_s("%s", vars, 15);
    for (int i = 0; i < 15; i++) {
        insertArray(&elements, vars[i]);
    }
    freeArray(&elements);
}

我懷疑問題是由缺少的#include <stdlib.h>引起的。

請參見是否強制轉換malloc的結果? 了解為什么不應該malloc的返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM