Normally, we run code under elevated previleges that takes System User account in created by modified by. If we want to reflect Created By/Modifed by with logged in user, you have to specify UserToken while opening site.
SPUserToken loggedInUserToken = SPContext.Current.Web.CurrentUser.UserToken;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite objSite = new SPSite(SPContext.Current.Web.Url,loggedInUserToken))
{
using (SPWeb objWeb = objSite.OpenWeb())
{
objWeb.AllowUnsafeUpdates = true;
SPListItem lstItem= listItemCollection.Add();
lstItem[“Foo”] = “Bar”
lstItem.Update();