Выделить меньше места, чем необходимо для определенного типа?

Я относительно новичок в программировании на C и у меня проблемы время, чтобы понять всю проблему выделения памяти.

Скажем так:

int *n = malloc(sizeof(char));
// (assuming malloc doesn't return NULL of course)

Это дает указатель на int, но я не выделил достаточно памяти для int. Почему тогда это работает? Я мог бы даже привести его на int явно, и это не побеспокоит gcc. Я знаю, что компиляторы C очень минималистичны, но даже если я присвою значение * n, которое не помещается в char, например:

*n = 300;

... и распечатайте его потом:

printf("%d", *n);

... он работает отлично, хотя сейчас, самое позднее, я ожидал бы какой-нибудь ошибки вроде ошибки сегментации.

Я имею в виду, что sizeof (char) равно 1, а sizeof (int) равно 4. На моей машине 3 байта записываются в какое-то место в памяти, которое не было выделено должным образом.

Это работает только потому, что не выходит из стека?

Может ли кто-нибудь указать мне место где я могу найти просвет по этому поводу?

-12 1 --- 1812837-

Заголовок диапазона HTTP для списков объектов У меня есть такие ресурсы / entity # GET, POST / entity / # GET, PUT, DELETE GET / entity gets список всех сущностей. Теперь я хочу запросить обновления. Случай для одного ...

У меня есть подобные ресурсы

/entities        # GET, POST
/entities/   # GET, PUT, DELETE

GET / entity получает список всех объектов. Теперь я хочу запросить обновления. Случай для одного объекта прост:

GET /entities/2
If-Modified-Since: 

Список сложный.Я хочу, чтобы ответ был списком сущностей, обновленных или созданных с заданного момента времени. Я бы интуитивно использовал

GET /entities
Range: after 

, который является допустимым запросом по спецификации HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2 . Но спецификация также требует ответа 206 Partial Content , который должен включать заголовок Content-Range . Заголовок Content-Range , в свою очередь, предписывает указать диапазон байтов http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16 . Очевидно, это очень неудобно для моего случая использования.

Как запросить семантический диапазон по HTTP?

6
задан Bendlas 23 October 2011 в 19:52
поделиться