Мой массив определяется как этотпамяти первого элемента в динамическом массиве полукокса
int buffSize = 80;
char* buff = (char*) malloc(sizeof(char) * buffSize);
Во-первых, я думал, что &buff
должна быть такой же, как &buff[0]
, но, видимо, это не так! Я что-то пропустил? Это утверждение печатает два различных значения для этих двух:
printf("COMPARE: buff=%u, buff[0]=%u\n", &buff, &buff[0]);
Во-вторых, почему я спросил, потому что я пытаюсь создать большой буфер и «вручную» делить его использовать с getline
. В принципе, я хотел бы сделать что-то вроде этого:
int byte_read, total_read = 0;
do
{
read = getline(&buff[totalRead], buffSize, inFile); //where inFile is just a file handler
totalRead += read;
}
while (byte_read > 0);
[Не бросать malloc] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – Barmar
Вы, вероятно, хотели 'buffsize - total_read' в' getline 'call, иначе вы можете переполнить. –
Вы, кажется, мысленно путаете указатель с тем, на что он указывает. Не делайте этого; они являются двумя совершенно отдельными сущностями. –