У меня есть следующий код:Realloc просто ничего не diong, не erroring
#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' ... –
Вы правы, я. Спасибо ... теперь отлаживать оригинальную программу. –