0
我已經開始使用的動態數組在C,我得到一個異常拋出運行時錯誤:動態數組 - 拋出異常
Exception thrown at 0x00007FF7ECB21A87 in Assignment 3.exe: 0xC0000005: Access violation writing location 0xFFFFFFFFE7CBC420.
這發生在insertArray()
功能,權當我嘗試存儲在struct Array
發現數組變量char
元件(見下面):
代碼:
#include <stdio.h>
#include "header3.h"
typedef struct {
char *array;
size_t used;
size_t size;
} Array;
typedef struct {
int *array;
size_t used;
size_t size;
} intArray;
void initArray(int option, Array *a, intArray *b, size_t initialSize) {
if (option == 1) {
a->array = (int *)malloc(initialSize * sizeof(char));
a->used = 0;
a->size = initialSize;
}
else {
b->array = (int *)malloc(initialSize * sizeof(int));
b->used = 0;
b->size = initialSize;
}
}
void freeArray(int option, Array *a, intArray *b) {
if (option == 1) {
free(a->array);
a->array = NULL;
a->used = a->size = 0;
}
else {
free(b->array);
b->array = NULL;
b->used = b->size = 0;
}
}
void insertArray(int option, Array *a, intArray *b, char element, int element2) {
if (option == 1) {
if (a->used == a->size) {
a->size *= 2;
a->array = (char *)realloc(a->array, a->size * sizeof(char));
}
a->array[a->used++] = element; //ERROR HERE
}
else {
if (b->used == b->size) {
b->size *= 2;
b->array = (int *)realloc(b->array, b->size * sizeof(int));
}
b->array[b->used++] = element2;
}
}
int main() {
Array eq, postFx;
initArray(1, &eq, 0, 2); // initially 2 elements
initArray(1, &postFx, 0, 2);
int i;
char C;
printf("Enter character string\n");
while ((C = getchar()) != EOF)
insertArray(1, &eq, 0, C, 0); // automatically resizes as necessary
//int n = expEvaluate(eq, (eq.used)-1, postFx); //call expEvaluate to process eq
//printf("\nAnswer: %d", n);
int chk = getchar(); //readkey (twice)
freeArray(1, &eq, 0);
chk = getchar();
return 0;
}
我似乎無法GE不管怎樣,我可能會錯過某些明顯的東西,或者問題比這更大......無論哪種方式,都可以幫助我們表示感謝!
使用'gdb' ....... –
花一些時間學習如何使用調試器。 – OldProgrammer
以及我知道如何使用調試器,感謝調試器,我確切地知道拋出異常的地方,但不幸的是我不知道代碼 – Logan