A cursor is a memory object and as such does store the data in memory. It is not all stored in memory at the same time. In fact creating and opening a cusro doesn't produce the same amount of memory utilization on the server as doing a "SELECT count(*) on Table". In the BOL index enter "cursors, overview" and review the topic.