Through all of history, charity has never been enough to solve those issues. It would be wrong to think that your charity alone is enough to solve those problems.
However, while the solutions to those problems aren't being implemented, charity can help soften the blow. It would be correct to think that your charity helps somewhat, but much, much more needs to be done.
Get involved with charity, but also get involved in policy at all levels, local to federal.
To give an example about why this is important, several places I've lived have criminalized things like addiction, homelessness, feeding people who need food, and community gardens.
It was local and state activism that made so that if an overdose was called in via 911, everyone who helped the victim didn't get arrested as a result. That stopped the trend of people not getting help for overdoses, as well as disturbing trends like overdose victims being left on the side of the road.
Local and state activism helped get affordable housing measures passed, as well.