У меня есть следующий код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char ** argv)
{
//just checking to see where the stack
printf("The stack is around %p\n", &argc); is, making sure arr isn't in it
char ** arr = malloc(8*sizeof(char*));
printf("arr is size %li, at %p\n", sizeof(arr), arr);
arr = realloc(arr, 100); //I picked a weird number to show it isn't doing anything. I've picked different numbers (like 200, 2*sizeof(char*)*sizeof(arr), and 16)
printf("arr is size %li, at %p\n", sizeof(arr), arr);
}
Это весь файл (это модульный тест, я заметил его в другом месте)
Вывод вышеизложенного выглядит следующим образом:
The stack is around 0x7fff5b94d12c
arr is size 8, at 0x120f010
arr is size 8, at 0x120f010
Возможно, я неправильно понимаю, что должен делать realloc. Я ожидаю следующего результата.
The stack is around 0x7fff5b94d12c
arr is size 8, at 0x120f010
arr is size <size>, at <somewhere>
где <size>
это... что-то странное вроде 12... по крайней мере, не 8, а <somewhere>
скорее всего 0x120f010
, но, возможно, в любом разумном месте.
Мои ожидания неверны или я неправильно использую realloc?
sizeof
... - person Oliver Charlesworth   schedule 26.01.2014