vector 动态分配数组有关问题,运行时报错。求老手解惑

vector<int> 动态分配数组问题,运行时报错。求老手解惑
之前创建了一个动态vector<int>数组如下:
vector<int> *ad =(vector<int> *) malloc(sizeof(vector<int>)*m);
运行到如下语句的时候就会出错
ad[i].push_back(st.at(j).no);
不知道为什么会出错 ?
求老手解惑。

------解决方案--------------------
malloc换成new 试试。
------解决方案--------------------
vector <int>是对象,只能用来new,不能用来malloc