Существует таблица, которая должна расти после определенной функции. Каждый раз, когда таблица заполнена, вызывается функция addMemory, удваивая текущий размер таблицы -> table. Кажется, что все работает нормально, и просто для проверки программы я прокомментировал вызов addMemory, поэтому я ожидал ошибку сегментации, так как в ОС не запрашивалась новая память, но она не терпела неудачу, и это на самом деле записывая данные рядом с памятью malloc'ed без каких-либо ошибок. Интересно, почему это происходит ???Отсутствие ошибки сегментации без malloc
код здесь:
int main(){
//user* newUser = (user*)malloc(BASE_SIZE*sizeof(user));
user* newUser = (user*)malloc(sizeof(user));
userTable* table = (userTable*)malloc(sizeof(userTable));
newUser->age = 1000;
table->length = 0;
table->table= newUser;
table->length++;
int i = 0;
int memlimit = 1000;
for(i = 1; i < memlimit; i++){
if(memZone(table->length-1) != memZone(table->length)){
//this is the line that asks for more memory
addMemory((void*)table,"userTable");
printf("mem pos =%i, age = %i\n",table->length,table->table[i-1].age);
}
table->table[i].age = (1000 + i);
table->length++;
}
printf("All memory have been successfully allocated \n");
int anything;
while(scanf("%i",&anything)){
reduceMemory((void*)table,"userTable");
printf("Age = %i \n",table->table[table->length - 1].age);
}
}
определения Struct эти из них:
typedef struct {
/* Username unique for this user in the system */
char username[25];
/* User name */
char name[100];
/* Age */
unsigned int age;
/* User city */
char city[128];
} user;
/* Table of users */
typedef struct {
/* Array of users */
user* table;
/* Number of registers in the table */
int length;
} userTable;
Это тот ответ, который я ищу, спасибо! – tomacco