# After a succesful glLinkProgram, should I delete / detach my shaders?

After I have a linked program, and thinking about defensive programming, should I delete and detach the shaders used to link this program?

If yes, is that going to free any resources? Or do these shader objects only going to be freed after a glDeleteProgram call?

edit: Just for clarification what I am doing is (which is consistent with the answer):

Yes, you should always do this. I didn't find out about this until just recently, but a shader won't actually be deleted by glDeleteShader until it's been detached. It's mentioned on the man page for glDetachShader