[VIDEO PLAYBACK]
DAVID MALAN: So what else can go wrong
now that we have the ability to touch,
correctly or incorrectly,
any memory that we add--
[END PLAYBACK]
DAVID MALAN: So at this
point in the term, too,
it's a nice opportunity
to dive into another topic
that you wouldn't typically see, I
think, at this point in the semester,
or let alone an intro class, which is
a discussion of memory leaks, right?
Because this language, C, is not
giving us that feature, at least
in the general case, so we have
added it to the CS50 library.
DOUG LLOYD: Memory leaks are
actually kind of a tricky topic
to teach, because in the
context of CS50, in the programs
that we're writing, we're not really
going to notice a memory leak for us.
DAVID MALAN: Right, no.
But I think it's important
for correctness for students
to also realize the causal
relationship between them allocating
memory and the program itself ultimately
leaking if they don't actually
give it back.
And what's nice too is that in Valgrind,
even though its syntax is not nearly as
accessible as would be ideal
and its output even more so,
it's a very deterministic tool that
can tell students whether or not
their code is leaking, and better
still, if they are touching memory
at some point that they shouldn't
be, even it's not just by luck
inducing an actual site fault for them.
DOUG LLOYD: Right, and
this year, we're actually
able again to teach Valgrind earlier
because we revamped the CS50 library
to have garbage collection, where
previously Valgrind would throw sort
of false errors out because
get string technically
leaked memory when you used it.
DAVID MALAN: And now, you
don't have to worry about that.
And, as we discussed when we looked
again at help 50, the new command line
tool with which students
can translate a program's
output to more human
friendly messages, Valgrind
was kind of top of our list for that.
I mean, the output of Valgrind
is just so unnecessarily complex.
Like, I don't know why
the authors decided
to just repeat the process ID
of the thing again and again
and again and again all
along the left-hand side.
It's not all that useful,
and it's certainly
distracting except when maybe you might
have multiple processes interacting
and you want to see them both.
But in our case, it's just
it's just a distraction.
DOUG LLOYD: Yeah, it's
just a distraction.
DAVID MALAN: And so,
help 50 now, thankfully,
will translate those messages
for students in a way
that I don't think is to their
detriment in terms of understanding,
because indeed, in
reality, they're not going
to use Valgrind all that
likely beyond the scope of CS50
if they're generally
programming in other languages.
But they're still seeing
the output, and then we're
helping them translate it, much like a
TF or CA would if he or she came over
to you to explain.
