Вы должны использовать len
для объекта списка, возвращенного r.json()
вместо этого:
lst = r.json()
for i in range(len(lst)):
x = lst[i]
print(x)
Но тогда вам следует просто перебрать список вместо:
for x in r.json():
print(x)
new
и delete
являются особенностями C ++. Их не было в C. malloc
- это старый школьный способ делать что-то на языке C. В большинстве случаев вам не нужно использовать его в C ++.
malloc
выделяет неинициализированную память. Выделенная память должна быть освобождена с свободным
. calloc
похож на malloc
, но инициализирует выделенную память константой (0). Его нужно освободить с помощью free
. new
инициализирует выделенную память, вызывая конструктор (если это объект). Память, выделенная с помощью new
, должна быть освобождена с помощью delete
(который, в свою очередь, вызывает деструктор). Вам не нужно вручную указывать нужный размер и приводить его к соответствующему типу. Таким образом, это ' s более современный и менее подверженный ошибкам. Вам не нужно ничего, кроме нового. Это полная замена malloc в C ++.
Что касается различия: Malloc просто выделяет память. Новая память выделяется и вызывает конструкторы. Точно так же бесплатно просто освобождает память. Delete освобождает память и вызывает деструктор.
Слово предупреждения: не смешивайте две идиомы. Результаты не определены.
Новая память выделяется и вызывает конструкторы. Точно так же бесплатно просто освобождает память. Delete освобождает память и вызывает деструктор.Слово предупреждения: не смешивайте две идиомы. Результаты не определены.
Новая память выделяется и вызывает конструкторы. Точно так же бесплатно просто освобождает память. Delete освобождает память и вызывает деструктор.Слово предупреждения: не смешивайте две идиомы. Результаты не определены.
Когда вы создаете новый объект, пространство для объекта не только выделяется, но и вызывается конструктор объекта. Но это так, как это было сделано в C ++, malloc - это старый вариант C распределения памяти. calloc - это то же самое, что malloc , за исключением того, что он очищает память для всех нулевых битов.
Также см. мой связанный ответ здесь
основное различие между new и malloc, которое я могу вспомнить, состоит в том, что вы не можете перераспределять память, выделенную new, используя realloc. Поэтому, если вы хотите увеличить / уменьшить размер блока памяти, вам нужно было выделить новый блок и скопировать все заново.
Calloc позволяет инициализировать блок памяти, который вы выделяете, а malloc - нет.
Как указывалось в других сообщениях: malloc / free является частью C ++, чтобы быть совместимым с C.
См. Также: Страуструп: new vs malloc
Использование new означает, что конструкторы будут вызываться для вновь выделенной памяти. Если выделяемый объект не имеет конструкторов, new функционально идентичен malloc. и обычно должен использоваться вместо него.
new может быть реализован или не реализован в терминах malloc - стандарт C ++ не требует ни того, ни другого подхода.
Когда вы new объект, пространство для объекта не только выделяется, но и вызывается конструктор объекта. Но это способ C ++, malloc - это старый способ выделения памяти в C . calloc то же самое, что malloc , за исключением того, что очищает память до всех нулевых битов.