The first option will work with some modifications, provided that the variables are initialized properly.
int nItems = 5;
Item** items = (Item**)calloc(nItems, sizeof(Item*));
Item* item = new Item();
items[nItems] = item; items[0] = item;
if (items != null)
{
for (int i=0; i<nitems;> {
if (items[i] != null)
delete items[i];
}
free(items);
items = null;
}