나는 목록을 생성하고 cout을, 머리의 주소 변경 완전히왜 주 (CUT)가 목록 주소를 변경합니까?
#include<iostream>
#include<vector>
using namespace std;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
struct ListNode{
int val;
ListNode *next;
ListNode(int x) :val(x), next(NULL){
}
};
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
}
};
ListNode* geneate_list(vector<int> data){
ListNode *p1, *p2;
if (data.size() <= 0){
p1 = (ListNode*)malloc(sizeof(ListNode));
return p1;
}
/*ListNode *p1, *p2;*/
ListNode head(data[0]);
p2 = &head;
for (int i = 1; i < data.size(); i++){
p1 = (ListNode*)malloc(sizeof(ListNode));
p1->val = data[i];
p1->next = NULL;
p2->next = p1;
p2 = p1;
}
return &head;
}
int main(){
vector<int> data = {1,2,3,4,5,6};
ListNode* head = geneate_list(data);
ListNode * g = head;
while (head!=NULL){
cout << head->val;
head = head->next;
}
return 0;
}
그때 발견하여 발을 인쇄 할. ?
전에 그래서후, 사람이 들으이 설명 할 수
'geneate_list'는 함수의 지역 변수 (함수가 반환 된 후에 수명이 끝나는)의 주소를 반환하여 * 정의되지 않은 동작 *을 호출합니다. – UnholySheep
다소 관련이 없지만 C++ 프로그램에서 왜'malloc'을 사용합니까? –