![](/img/trans.png)
[英]dynamic matrix realloc in C - getting error Unhandled exception at (msvcr120d.dll) in Access violation reading location
[英]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.