Я использовал valgrind несколько раз в прошлом, но если вы хотите узнать, где происходит всплеск, я бы использовал следующий хак:
1) измерим размер всплеска (предположим,SPIKE = 1 ГБ)
2) (при условии, что ваш общий объем памяти равен 4 ГБ), запустите другой пользовательский процесс, который будет выделять ровно 3 ГБ + 1 байт, и подождите, пока вы не нажмете клавишу.Оставьте это в ожидании
3) запустите код приложения и посмотрите, где произойдет сбой распределения памяти.Так как ваша доступная память теперь немного меньше, чем ваш SPIKE, когда всплеск произойдет, он не сможет выделить запрошенную память
надеюсь, что это поможет